gpt4 book ai didi

julia - 使用 UInt128 数据类型时 Julia 中的大整数除法错误

转载 作者:行者123 更新时间:2023-12-04 13:06:55 24 4
gpt4 key购买 nike

当我除以 UInt128 类型的大整数时,我得到了不正确的结果。错误似乎发生在同一地点,有效数字明智,float64 将舍入其结果。使用一些简单的东西,比如除以 2,我可以很容易地验证我没有得到正确的答案。此外,我还可以使用 BigInt 类型来验证我在使用 UInt128 变量时确实看到了看似重要的数字错误。

我对 Julia 还很陌生,对该语言的内部工作原理还不够熟悉,不知道为什么会发生这种情况以及何时会出现这些结果。有人可以告诉我一些关于为什么/如何发生这种情况的见解。

例如:

xb::BigInt = big"40282366920938463463374607431768211456"
ub::BigInt = big"2"

xu::UInt128 = parse(UInt128,"40282366920938463463374607431768211456")
uu::UInt128 = parse(UInt128, "2")

println("Initial value for xb = " , xb)
println("Initial value for xu = " , xu)

gb::BigInt = xb / ub
gu::UInt128 = xu / uu
g1::UInt128 = UInt128(40282366920938463463374607431768211456) / UInt128(2)
g2 = UInt128(40282366920938463463374607431768211456) / UInt128(2)
println("Division result using BigInt = ", gb)
println("Division result using UInt128 variables = ", gu)
println("Division result using UInt128 typecasts = ", g1)
println("Division result using UInt128 julia decides = ", g2)
println(typeof(g2))

输出:

julia> include("uint128_test.jl")
Initial value for xb = 40282366920938463463374607431768211456
Initial value for xu = 40282366920938463463374607431768211456
Division result using BigInt = 20141183460469231731687303715884105728
Division result using UInt128 variables = 20141183460469232747289327097010454528
Division result using UInt128 typecasts = 20141183460469232747289327097010454528
Division result using UInt128 julia decides = 2.0141183460469233e37
Float64

最佳答案

Julia 中的整数除法提升为 Float64。您想使用 div÷ 进行整数除法。

对于这个非常简短的版本,3/2 = 1.5

关于julia - 使用 UInt128 数据类型时 Julia 中的大整数除法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69003542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com