猿问

为什么 math.Nextafter(2,3) 在 Go 中增加

这是取自这里:http : //tour.golang.org/#5


package main


import (

    "fmt"

    "math"

)


func main() {

    fmt.Printf("Now you have %g problems.",

        math.Nextafter(2, 3))

}

结果:


//Now you have 2.0000000000000004 problems.

//Program exited.


繁华开满天机
浏览 220回答 1
1回答

白板的微信

您将获得与 java/scala 完全相同的结果。该math/#Nextafter函数“返回 x 之后朝向 y 的下一个可表示值。”Float64frombits(Float64bits(x) + 1)正如在这个线程中提到的float64不能表示所有 16 位数字。例如,如果 x = 0.12345678901234567,使用math.Nextafter,可以看到附近的 float64 值为 ...1234565、...1234566 和 ...1234568另请参阅“为什么十进制数不能用二进制精确表示? ”。或者这个线程:某些可以完全以 10 为基数表示的数字不能以 2为基数完全表示。例如,数字 0.1(以 10 为基数)不能完全以 2为基数表示。就像 0.1(以 3 为基数)不能完全表示一样作为以 10 为底的十进制值:它是 0.33333(永远重复)。该golang问题4398说明:const x1 = 1 - float64(1.00000000000000000001) // 0!规范说如果“可以由 type 的值表示”,则x可以将常量值转换为type 。 该值不能用 表示;最接近的近似值是 1。TxT1.00000000000000000001float64
随时随地看视频慕课网APP

相关分类

Go
我要回答