의 합을 얻으려고 1 + 2 + ... + 1000000000
하지만 PHP와 Node.js 에서 재미있는 결과를 얻습니다 .
PHP
$sum = 0;
for($i = 0; $i <= 1000000000 ; $i++) {
$sum += $i;
}
printf("%s", number_format($sum, 0, "", "")); // 500000000067108992
Node.js
var sum = 0;
for (i = 0; i <= 1000000000; i++) {
sum += i ;
}
console.log(sum); // 500000000067109000
정답은 다음을 사용하여 계산할 수 있습니다.
1 + 2 + ... + n = n(n+1)/2
정답 = 500000000500000000 이므로 다른 언어를 사용하기로 결정했습니다.
가다
var sum , i int64
for i = 0 ; i <= 1000000000; i++ {
sum += i
}
fmt.Println(sum) // 500000000500000000
그러나 잘 작동합니다! PHP와 Node.js 코드에 어떤 문제가 있습니까?
아마도 이것은 해석되는 언어의 문제 일 것이므로 Go와 같은 컴파일 된 언어로 작동합니까? 그렇다면 Python 및 Perl과 같은 다른 해석 언어도 같은 문제가 있습니까?