相关疑难解决方法(0)

在解释语言上使用非常大的整数时出现意外结果

我想得到的总和1 + 2 + ... + 1000000000,但我在PHP和Node.js得到了有趣的结果.

PHP

$sum = 0;
for($i = 0; $i <= 1000000000 ; $i++) {
    $sum += $i;
}
printf("%s", number_format($sum, 0, "", ""));   // 500000000067108992
Run Code Online (Sandbox Code Playgroud)

Node.js的

var sum = 0;
for (i = 0; i <= 1000000000; i++) {
    sum += i ;
}
console.log(sum); // 500000000067109000
Run Code Online (Sandbox Code Playgroud)

可以使用计算正确的答案

1 + 2 + ... + n = n(n+1)/2
Run Code Online (Sandbox Code Playgroud)

正确答案= 500000000500000000,所以我决定尝试另一种语言.

走

var sum , i int64
for i = 0 …
Run Code Online (Sandbox Code Playgroud)

php precision integer-overflow node.js integer-arithmetic

192
推荐指数
11
解决办法
3万
查看次数

格式化长数字时PHP会给出错误的结果

我正在为网站目的大量工作,我需要长时间的计算.当我回显一个很长的数字时,我得不到正确的输出.

例

// A random number
$x = 100000000000000000000000000;

$x = number_format($x);
echo "The number is: $x <br>";
// Result: 100,000,000,000,000,004,764,729,344 
// I'm not getting the value assigned to $x
Run Code Online (Sandbox Code Playgroud)

php integer biginteger number-formatting arbitrary-precision

12
推荐指数
2
解决办法
1502
查看次数