当前位置: 首页 > 知识库问答 >
问题:

浮点精度golang

茅高卓
2023-03-14
    fmt.Println(51.231576 * math.Pi / 180) // 0.8941596821857065
    fmt.Println(float64(51.231576) * math.Pi / 180) //0.8941596821857064

谢谢

共有1个答案

龚俊捷
2023-03-14

这与非类型化常量有关。非类型化浮点常量可以保存比类型化float64常量精度高得多的值。

在第二行,在您的类型化常数表达式中,乘法产生一个浮点,其精度比第一行的非类型化常数表达式中的乘法小得多。

实现限制:尽管数值常量在语言中具有任意精度,但编译器可以使用精度有限的内部表示来实现它们。话虽如此,每一项执行都必须:

    null
 类似资料:
  • 我编写了一个程序来演示Go中的浮点错误: 它打印: 这与用C编写的相同程序的行为相匹配(使用双代码类型) 但是,如果改用,程序就会陷入无限循环!如果将C程序修改为使用而不是,它将打印 为什么在使用时,Go程序的输出与C程序的输出不一样?

  • 问题内容: $a = ‘35’; $b = ‘-34.99’; echo ($a + $b); 结果为0.009999999999998 这是怎么回事?我想知道为什么我的程序不断报告奇怪的结果。 为什么PHP不返回预期的0.01? 问题答案: 因为浮点运算!=实数运算。对于一些浮子和,由不精确性引起的差异的说明是。这适用于使用浮点数的任何语言。 由于浮点数是具有有限精度的二进制数,因此存在有限数量

  • 本文向大家介绍Fortran 浮点数精度,包括了Fortran 浮点数精度的使用技巧和注意事项,需要的朋友参考一下 示例 类型的浮点数real不能有任何实数值。它们可以表示实数,最多可以包含一定数量的十进制数字。 FORTRAN 77保证了两种浮点类型,而最新的标准则至少保证了两种实数类型。实变量可以声明为 x这是默认类型的实数,并且y是比更大的十进制精度的实数x。在Fortran 2008中,十

  • 运行以下代码时,我希望收到这样的输出: 但结果如下: 欢迎任何能指导我正确使用浮点比较和正确使用setprecision的建议。

  • 问题内容: 我编写了一个程序来演示Go中的浮点错误: 它打印: 这与用C编写的同一程序的行为匹配(使用类型) 但是,如果使用,则该程序将陷入无限循环!如果您将C程序修改为使用a 而不是a ,则会输出 使用时,为什么Go程序没有与C程序相同的输出? 问题答案: 同意ANisus,go在做正确的事。关于C,我不相信他的猜测。 C标准没有规定,但是libc的大多数实现会将十进制表示形式转换为最接近的浮点

  • 在我的计算机科学课程中,我们正在研究浮点数以及它们在内存中是如何表示的。我已经理解了它们在内存中是如何表示的(尾数/有效数、指数及其偏差、符号位),我也理解了浮点是如何相互添加和减去的(反规格化和所有那些有趣的东西)。然而,在翻阅一些学习问题时,我注意到一些我无法解释的东西。 当一个不能精确表示的浮点数加到自己身上几次时,答案比我们在数学上预期的要低,但当同一个浮点数乘以一个整数时,答案就精确地得