为什么有些数字在存储为浮点数时会失去准确性?
例如,十进制数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位内存中表达"太大" ?
我想在Go中计算一个5000的阶乘,但结果得到0因为结果比uint64大.但是,我能够通过使用在Node.js中完成它
const BigNumber = require('big-number').
Run Code Online (Sandbox Code Playgroud)
Go中是否有等价的?
我做的是:
func RecursiveFactorial(number int) big.Int {
if number >= 1 {
return big.Int{(number) * RecursiveFactorial(number-1)
} else {
return 1
}
}
Run Code Online (Sandbox Code Playgroud)