我试图弄清楚为什么1e-10
在此代码中使用。我正在进行练习并被卡在Next, change the loop condition to stop once the value has stopped changing (or only changes by a very small delta). See if that's more or fewer iterations
上。在没有搞清楚后,我搜索并找到了其他人的解决方案。
在很多解决方案中,我看到1e-10
是if
循环中for
语句的一部分。在Golang,这是否意味着1e升至(-10)的力量?对于Golang来说是自动的吗?所以基本上我通常认为它会写成1e^(-10)
?
package main
import (
"fmt"
"math"
)
func Sqrt(x float64) float64 {
z := float64(2.)
s := float64(0)
for i := 0; i < 10; i++ {
z = z - (z*z - x) / (2 * z)
if math.Abs(z-s) < 1e-10 {
break
}
s = z
}
return z
}
func main() {
fmt.Println(Sqrt(2))
fmt.Println(math.Sqrt(2))
}
感谢您提供的任何/所有帮助!
答案 0 :(得分:4)
1e-10
是一个浮点字面值,其值为1减去10。
The Go Programming Language Specification
浮点文字是a的十进制表示 浮点常数。它有一个整数部分,一个小数点,一个 小数部分和指数部分。整数和小数部分 包括十进制数字;指数部分是e或E后跟一个 可选的带符号十进制指数。其中一个整数部分或 分数部分可以省略;小数点之一或 指数可能被省略。
float_lit = decimals "." [ decimals ] [ exponent ] | decimals exponent | "." decimals [ exponent ] . decimals = decimal_digit { decimal_digit } . exponent = ( "e" | "E" ) [ "+" | "-" ] decimals . 0. 72.40 072.40 // == 72.40 2.71828 1.e+0 6.67428e-11 1E6 .25 .12345E+5