Mysql est atteind de noobisme... [by suri] - SQL/NoSQL - Programmation
Marsh Posté le 30-07-2003 à 21:12:55
ReplyMarsh Posté le 30-07-2003 à 21:17:56
En tout cas, SQL Server merde pas
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.
Marsh Posté le 30-07-2003 à 21:33:20
J'ai trouvé, problème de conversion connu
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
Marsh Posté le 30-07-2003 à 21:35:25
sauf que la le nombre max est de 53 et quelques bits si je me souviens bien
Marsh Posté le 30-07-2003 à 21:36:27
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
Marsh Posté le 30-07-2003 à 21:39:01
THE REAL SMILEY a écrit : |
en fait ils disent 63bits mais bon un peu moins koi
enfin ca fout la merde qd meme...
Marsh Posté le 30-07-2003 à 21:51:10
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)
C'est après que ca pose problème
Marsh Posté le 30-07-2003 à 22:12:04
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 |
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.
Marsh Posté le 30-07-2003 à 23:41:43
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 )
Marsh Posté le 31-07-2003 à 00:11:43
Ca m'intrigue aussi, parceque normalement, en decimal ça devrait passer, puisque ta précision est plus grande que tes chiffres Là j'ai l'impression que MySQL a fumé grave la moquette avec la colle et tout...
Marsh Posté le 13-08-2003 à 18:15:39
CREATE TABLE masks ( |
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
Marsh Posté le 13-08-2003 à 18:27:48
simogeo a écrit :
|
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é
Marsh Posté le 30-07-2003 à 21:11:41
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:
=> SELECT SUM(mask) FROM masks LIMIT 0, 30
36028797018963968
soit le resultat de bc + 1
mais keskidi?