Discussion:
Tcl expr regner forkert!?
(for gammel til at besvare)
JoeX
2008-02-06 15:47:57 UTC
Permalink
Ja, jeg ved ikke med for mig at se, ser det ud som det. Hvis jeg har
følgende umådelige simple regnestykke:

puts [ expr 1445372 * 4096 ]

.. så ville jeg forvente at få 5920243712 tilbage men istedet får jeg
1625276416 !? Hvorfor?
JoeX
2008-02-06 16:07:03 UTC
Permalink
Post by JoeX
Ja, jeg ved ikke med for mig at se, ser det ud som det. Hvis jeg har
puts [ expr 1445372 * 4096 ]
.. så ville jeg forvente at få 5920243712 tilbage men istedet får jeg
1625276416 !? Hvorfor?
Nå, den skal have en double - problemet løst:
puts [ expr round ( double(1445372) * 4096 ) ]
Bertel Lund Hansen
2008-02-06 16:13:10 UTC
Permalink
Post by JoeX
puts [ expr 1445372 * 4096 ]
.. så ville jeg forvente at få 5920243712 tilbage men istedet får jeg
1625276416 !? Hvorfor?
Fordi 5920243712 - 1625276416 = 4294967296

og 4294967296 = 2^32

Der er et resultat eller et mellemfacit der bliver skåret af
fordi lageret (eller taltypen) kun har 32 bit.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Loading...