Skip to content

proposal_id overflow #4

@SiegfriedZhen

Description

@SiegfriedZhen

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 working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions