-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
bugSomething isn't workingSomething isn't working
Description
2,185,845,802,830,660,400 變成 2185845802830660352 , 是因為 int overflow嗎
這個現象通常不是因為 int overflow,而是因為數值被轉換成浮點數(例如 IEEE 754 的 double)後精度不足所致。Double 有 53 位的有效位數,而這個數字超出了 double 能夠精確表示的範圍,導致在存儲或運算時出現了微小的舍入誤差。
如果你的程式語言或環境默認使用 double 來處理大數字(例如 JavaScript),就可能會遇到這種情況。而如果使用支持 64 位整數(例如 C++ 中的 long long 或 Java 中的 long),這樣的精度損失一般就不會發生,因為 2,185,845,802,830,660,400 落在 64 位整數的表示範圍內。
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working