Julia 将表格x的两个数字相乘。XXXXXX E-x*10^xx无法正常工作

Julia 将表格x的两个数字相乘。XXXXXX E-x*10^xx无法正常工作,julia,Julia,我试图在代码中计算以下示例,但得到了错误的答案: julia> -1.259237254330301e-29*10^29 -9.930838679817422e-11 答案显然是错误的,预计为-1.25923725430301。 我得到了正确的答案 julia> -1.259237254330301e-29*1e29 -1.2592372543303008 有人知道原因吗?尽管浮点数有舍入错误,但错误结果的原因是使用整数算术,类型中有溢出: 在64位操作系统上,10^29溢出(

我试图在代码中计算以下示例,但得到了错误的答案:

julia> -1.259237254330301e-29*10^29 
-9.930838679817422e-11
答案显然是错误的,预计为-1.25923725430301。 我得到了正确的答案

julia> -1.259237254330301e-29*1e29
-1.2592372543303008

有人知道原因吗?

尽管浮点数有舍入错误,但错误结果的原因是使用整数算术,类型中有溢出: 在64位操作系统上,10^29溢出(在没有错误的情况下)

如果您选择了一种可以保存该值的类型,则结果是正确的: 例如:

或:


这个问答的可能重复解释了浮点运算的危险性。这显然不是“浮点运算被破坏了吗?”
64-Bit OS: 10^18 =  = 1000000000000000000  (64-Bit Integers can hold up to ~ 9,22x10^18)

while: 10^19 turns to: -8446744073709551616 which is wrong, due to overflowing.
julia> -1.259237254330301e-29*Int128(10)^29
-1.2592372543303008
julia> -1.259237254330301e-29*big(10)^29
-1.259237254330300936796903330938514872571882315563023692882767533667837970629477