相关疑难解决方法(0)

为什么浮点数不准确?

为什么有些数字在存储为浮点数时会失去准确性?

例如,十进制数9.2可以精确地表示为两个十进制整数(92/10)的比率,两者都可以用二进制(0b1011100/0b1010)精确表示.但是,存储为浮点数的相同比率永远不会完全等于9.2:

32-bit "single precision" float: 9.19999980926513671875
64-bit "double precision" float: 9.199999999999999289457264239899814128875732421875
Run Code Online (Sandbox Code Playgroud)

这样一个看似简单的数字如何在64位内存中表达"太大" ?

language-agnostic floating-point precision

181
推荐指数
4
解决办法
3万
查看次数

在 Go 算法中处理浮点数精度?

我对在 Go 中准确减去 2 个浮点数的方法感兴趣。

我尝试使用该 math/big库,但无法获得准确的结果。

我在 Javascript 中使用了big.js库来解决这个问题。是否有类似的 Go 算法库/方法?

    package main

    import (
        "fmt"
        "math/big"
    )

    func main() {
        const prec = 200
        a := new(big.Float).SetPrec(prec).SetFloat64(5000.0)
        b := new(big.Float).SetPrec(prec).SetFloat64(4000.30)
        result := new(big.Float).Sub(a, b)
        fmt.Println(result)
    }
    Result: 999.6999999999998181010596454143524169921875
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/vomAr87Xln

math floating-point go

3
推荐指数
1
解决办法
6644
查看次数

标签 统计

floating-point ×2

go ×1

language-agnostic ×1

math ×1

precision ×1