gpt4 book ai didi

floating-point - Julia 中的精确十进制算术

转载 作者:行者123 更新时间:2023-12-04 10:49:42 24 4
gpt4 key购买 nike

由于the nature of floating-point math,Julia中的.4 * .4 = 0.16000000000000003。我想以一种CPU有效的方式获得0.16的数学正确答案。我知道round()可以工作,但是需要先知道答案所占的小数位数,所以这不是一个通用的解决方案。

最佳答案

一些选项:

  • 使用内置的Rational类型。最准确,最快的方法是

    16//100 * 16//100

  • 如果您使用非常大的数字,则这些数字可能会溢出,在这种情况下,您可以使用 BigInt代替,
    big(16)//big(100) * big(16)//big(100)

    (您实际上不需要将它们全部包装在 big中,因为这些原理会自动升级)。

    您还可以使用 rationalize(0.16),但这可能不那么准确或有效,因为文字Juliat看到时,文字 0.16已经转换为 Float64,因此您要转换为二进制浮点,然后转换为 Rational
  • DecFP.jl包装了Intel实现IEEE-754十进制浮点数。这应该相当快(尽管不如二进制有效),但是具有固定的精度,因此您将不得不舍入。
  • Decimals.jl是一个“大十进制”浮点库:由于它使用任意精度算法,因此它将比DecFP慢。

  • 要说最好的,则需要有关您的预期用途的更多信息。

    关于floating-point - Julia 中的精确十进制算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30264742/

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