Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2061 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mysql est atteind de noobisme... [by suri]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mysql est atteind de noobisme... [by suri]

n°472520
veryfree
Posté le 30-07-2003 à 21:11:41  profilanswer
 

suri ayant des problemes avec ses navigateurs c'est moi qui post son probleme:
 
 
une simple addition avec bc nous donne:
$>bc
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024 + 2048 + 4096 + 8192 + 16384 + 32768 + 65536 + 131072 + 262144 + 524288 + 1048576 + 2097152 + 4194304 + 8388608 + 16777216 + 33554432 + 67108864 + 134217728 + 268435456 + 536870912 + 1073741824 + 2147483648 + 4294967296 + 8589934592 + 17179869184 + 34359738368 + 68719476736 + 137438953472 + 274877906944 + 549755813888 + 1099511627776 + 2199023255552 + 4398046511104 + 8796093022208 + 17592186044416 + 35184372088832 + 70368744177664 + 140737488355328 + 281474976710656 + 562949953421312 + 1125899906842624 + 2251799813685248 + 4503599627370496 + 9007199254740992 + 18014398509481984
 
36028797018963967
quit
$>
 
jusque la c bon
ensuite ds mysql:
 

Code :
  1. CREATE TABLE masks (
  2.   id bigint(20) NOT NULL auto_increment,
  3.   mask bigint(20) NOT NULL default '0',
  4.   PRIMARY KEY  (id)
  5. ) TYPE=MyISAM;
  6. INSERT INTO masks VALUES (1, 1);
  7. INSERT INTO masks VALUES (2, 2);
  8. INSERT INTO masks VALUES (3, 4);
  9. INSERT INTO masks VALUES (4, 8);
  10. INSERT INTO masks VALUES (5, 16);
  11. INSERT INTO masks VALUES (6, 32);
  12. INSERT INTO masks VALUES (7, 64);
  13. INSERT INTO masks VALUES (8, 128);
  14. INSERT INTO masks VALUES (9, 256);
  15. INSERT INTO masks VALUES (10, 512);
  16. INSERT INTO masks VALUES (11, 1024);
  17. INSERT INTO masks VALUES (12, 2048);
  18. INSERT INTO masks VALUES (13, 4096);
  19. INSERT INTO masks VALUES (14, 8192);
  20. INSERT INTO masks VALUES (15, 16384);
  21. INSERT INTO masks VALUES (16, 32768);
  22. INSERT INTO masks VALUES (17, 65536);
  23. INSERT INTO masks VALUES (18, 131072);
  24. INSERT INTO masks VALUES (19, 262144);
  25. INSERT INTO masks VALUES (20, 524288);
  26. INSERT INTO masks VALUES (21, 1048576);
  27. INSERT INTO masks VALUES (22, 2097152);
  28. INSERT INTO masks VALUES (23, 4194304);
  29. INSERT INTO masks VALUES (24, 8388608);
  30. INSERT INTO masks VALUES (25, 16777216);
  31. INSERT INTO masks VALUES (26, 33554432);
  32. INSERT INTO masks VALUES (27, 67108864);
  33. INSERT INTO masks VALUES (28, 134217728);
  34. INSERT INTO masks VALUES (29, 268435456);
  35. INSERT INTO masks VALUES (30, 536870912);
  36. INSERT INTO masks VALUES (31, 1073741824);
  37. INSERT INTO masks VALUES (32, 2147483648);
  38. INSERT INTO masks VALUES (33, 4294967296);
  39. INSERT INTO masks VALUES (34, 8589934592);
  40. INSERT INTO masks VALUES (35, 17179869184);
  41. INSERT INTO masks VALUES (36, 34359738368);
  42. INSERT INTO masks VALUES (37, 68719476736);
  43. INSERT INTO masks VALUES (38, 137438953472);
  44. INSERT INTO masks VALUES (39, 274877906944);
  45. INSERT INTO masks VALUES (40, 549755813888);
  46. INSERT INTO masks VALUES (41, 1099511627776);
  47. INSERT INTO masks VALUES (42, 2199023255552);
  48. INSERT INTO masks VALUES (43, 4398046511104);
  49. INSERT INTO masks VALUES (44, 8796093022208);
  50. INSERT INTO masks VALUES (45, 17592186044416);
  51. INSERT INTO masks VALUES (46, 35184372088832);
  52. INSERT INTO masks VALUES (47, 70368744177664);
  53. INSERT INTO masks VALUES (48, 140737488355328);
  54. INSERT INTO masks VALUES (49, 281474976710656);
  55. INSERT INTO masks VALUES (50, 562949953421312);
  56. INSERT INTO masks VALUES (51, 1125899906842624);
  57. INSERT INTO masks VALUES (52, 2251799813685248);
  58. INSERT INTO masks VALUES (53, 4503599627370496);
  59. INSERT INTO masks VALUES (54, 9007199254740992);
  60. INSERT INTO masks VALUES (55, 18014398509481984);


 
=>  SELECT SUM(mask) FROM masks LIMIT 0, 30
36028797018963968
 
soit le resultat de bc + 1  :heink:  
 
mais keskidi?
   
 :??:  

mood
Publicité
Posté le 30-07-2003 à 21:11:41  profilanswer
 

n°472522
Suri
Darksurious
Posté le 30-07-2003 à 21:12:55  profilanswer
 
n°472527
MagicBuzz
Posté le 30-07-2003 à 21:17:56  profilanswer
 

En tout cas, SQL Server merde pas :D
 
Avec un pauvre numeric de précision 10.
 
PS: j'ai fait un simple copier/coller de tes requêtes, en ne changeant que le type des champs.


Message édité par MagicBuzz le 30-07-2003 à 21:19:07
n°472539
THE REAL S​MILEY
The Real Résistance!
Posté le 30-07-2003 à 21:31:11  profilanswer
 

[:drapo]
 :??: Je veux avoir le fin mot de cette histoire

n°472543
THE REAL S​MILEY
The Real Résistance!
Posté le 30-07-2003 à 21:33:20  profilanswer
 

J'ai trouvé, problème de conversion connu :jap:  
 
tiré de la doc MySQL:
 
http://www.mysql.com/doc/en/Column_types.html
 

Citation :

All arithmetic is done using signed BIGINT or DOUBLE values, so you shouldn't use unsigned big integers larger than 9223372036854775807 (63 bits) except with bit functions! If you do that, some of the last digits in the result may be wrong because of rounding errors when converting the BIGINT to a DOUBLE


 
Edit : en fait nan, on dépasse pas le range :/, mais bon, je pense que je suis pas loin du truc


Message édité par THE REAL SMILEY le 30-07-2003 à 21:35:46
n°472545
Suri
Darksurious
Posté le 30-07-2003 à 21:35:25  profilanswer
 

sauf que la le nombre max est de 53 et quelques bits si je me souviens bien


---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°472548
THE REAL S​MILEY
The Real Résistance!
Posté le 30-07-2003 à 21:36:27  profilanswer
 

Suri a écrit :

sauf que la le nombre max est de 53 et quelques bits si je me souviens bien


ben oui, j'avais édité :/, c'est fou ce truc :??:

n°472550
Suri
Darksurious
Posté le 30-07-2003 à 21:39:01  profilanswer
 

THE REAL SMILEY a écrit :


ben oui, j'avais édité :/, c'est fou ce truc :??:  


en fait ils disent 63bits mais bon  :whistle:  un peu moins koi :D
 
enfin ca fout la merde qd meme...


---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°472560
mrbebert
Posté le 30-07-2003 à 21:51:10  profilanswer
 

Suri a écrit :

sauf que la le nombre max est de 53 et quelques bits si je me souviens bien

D'ailleurs, ca fonctionne bien en additionnant les 53 premiers nombres (jusqu'à 4503599627370496 compris) [:figti]  
C'est après que ca pose problème :pt1cable:

n°472577
MagicBuzz
Posté le 30-07-2003 à 22:12:04  profilanswer
 

Y'a pas un type "numeric" ou "decimal" avec MySQL ? (Ca n'a AUCUN rapport avec des float, on peut stocker des entiers sans perte de précision) Il me semble que si.
 
L'avantage de ce type, c'est que les chiffres sont manipulés sous forme de chaîne de caractères, et on peut monter à des valeurs bien plus importantes (dépasser allègrement les 64 bits), sans perdre la moindre précision.
 
Extrait de la doc de SQL Server 2000 :
 

decimal and numeric
Numeric data types with fixed precision and scale.
 
decimal[(p[, s])] and numeric[(p[, s])]
 
Fixed precision and scale numbers. When maximum precision is used, valid values are from - 10^38 +1 through 10^38 - 1. The SQL-92 synonyms for decimal are dec and dec(p, s).
 
p (precision)
 
Specifies the maximum total number of decimal digits that can be stored, both to the left and to the right of the decimal point. The precision must be a value from 1 through the maximum precision. The maximum precision is 38.
 
s (scale)
 
Specifies the maximum number of decimal digits that can be stored to the right of the decimal point. Scale must be a value from 0 through p. The default scale is 0; therefore, 0 <= s <= p. Maximum storage sizes vary, based on the precision.
 
Precision Storage bytes  
1 - 9 5  
10-19 9  
20-28 13  
29-38 17


 
On dépasse donc TRES largement les 64 bits (17 * 8 = 136 bits) et on peux manipuler des nombres à 38 chiffres sans perte de précision.


Message édité par MagicBuzz le 30-07-2003 à 22:14:22
mood
Publicité
Posté le 30-07-2003 à 22:12:04  profilanswer
 

n°472653
Suri
Darksurious
Posté le 30-07-2003 à 23:41:43  profilanswer
 

en convertissant en decimal 20,0 (jsais pas si c bon)
j'ai toujours le meme pb avec SUM... :/
 
(enfin j'ai contourné le pb de facon porc hein.. mais ca m'intrigue cette histoire :D)
 


---------------
Suri.morkitu.org : Balades au coeur de la ville...
n°472675
MagicBuzz
Posté le 31-07-2003 à 00:11:43  profilanswer
 

Ca m'intrigue aussi, parceque normalement, en decimal ça devrait passer, puisque ta précision est plus grande que tes chiffres :heink: Là j'ai l'impression que MySQL a fumé grave la moquette avec la colle et tout...

n°486198
veryfree
Posté le 13-08-2003 à 17:58:11  profilanswer
 

bon c'est quoi le fin mot de cette histoire :D

n°486214
simogeo
j'ai jamais tué de chats, ...
Posté le 13-08-2003 à 18:15:39  profilanswer
 

 CREATE TABLE masks (  
    id bigint(20) NOT NULL auto_increment,  
    mask bigint(20) NOT NULL default '0',  
    PRIMARY KEY  (id)  
  ) TYPE=MyISAM;


 
pour commencer, déclarer les champs en 'unsigned' .....;)  
edit : j'ai pas trop lu le topik quand même .. j'esper que je dis pas de connerie  :whistle:


Message édité par simogeo le 13-08-2003 à 18:16:47

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°486223
MagicBuzz
Posté le 13-08-2003 à 18:27:48  profilanswer
 

simogeo a écrit :

 CREATE TABLE masks (  
    id bigint(20) NOT NULL auto_increment,  
    mask bigint(20) NOT NULL default '0',  
    PRIMARY KEY  (id)  
  ) TYPE=MyISAM;


 
pour commencer, déclarer les champs en 'unsigned' .....;)  
edit : j'ai pas trop lu le topik quand même .. j'esper que je dis pas de connerie  :whistle:  


T'as pas dit de connerie, ça n'a juste aucun rapport ;)
 
PS: de toute façon, rien ne vaut le type number, avec, pas de problème, et "pas" de limitation de nombre...
 
PS²: Par contre, pour faire un masque binaire, c'est pas très approprié :D

n°759401
veryfree
Posté le 10-06-2004 à 16:04:06  profilanswer
 

up ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mysql est atteind de noobisme... [by suri]

 

Sujets relatifs
[MySQL] Un rand pas si rand que ça...[Travail de Style] Planning en PHP et Mysql
mysql : les vues ?Petit soucil en mysql...
[PHP/MYSQL] problèmes avec mail(), setcookie, transfert de BD[PHP/MySQL] Webmail multi utilisateurs pour 1 compte POP
[Administration MySQL] La table user nettoyée[MYSQL]une requête qui dit le plus grand id de la table ?
MySQL V 4.1 est-elle vraiment stable pour une appli pro?Offre de projet PHP/mySQL rémunéré
Plus de sujets relatifs à : Mysql est atteind de noobisme... [by suri]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR