我知道這是一個老問題,但最近我遇到了這個問題,並編寫了一個適用於我的目的的函數。希望它可以幫助別人。它適用於單引號字符串和$ _GET。我沒有測試過$ _POST。如果您正在處理負整數或非整數,則必須進行修改。
<?php
function format_big_numbers($number, $delimiter) {
$len = strlen($number);
if ($len > 3){
if ($len % 3 == 0) {
$split = str_split($number, 3);
$number_with_commas = implode("$delimiter", $split);
return $number_with_commas;
}
else if ($len % 3 == 1) {
$front = substr($number, 0, 1);
$split = substr($number, 1, $len - 1);
$split = str_split($split, 3);
$number_with_commas = implode("$delimiter", $split);
$number_with_commas = $front . "$delimiter" . $number_with_commas;
return $number_with_commas;
}
else {
$front = substr($number, 0, 2);
$split = substr($number, 2, $len - 2);
$split = str_split($split, 3);
$number_with_commas = implode("$delimiter", $split);
$number_with_commas = $front . "$delimiter" . $number_with_commas;
return $number_with_commas;
}
}
else {
return $number;
}
}
$num = '1234567891234567891234567891234';
echo format_big_numbers($num, ","); // output is 1,234,567,891,234,567,891,234,567,891,234
?>
你有什麼輸出。 – Chandresh
關於倒票,我希望人們真正閱讀問題標題的內容:「爲什麼數字VALUE改變..」。我很清楚,number_format()添加逗號,它是我的意圖,但VALUE正在改變(最後六位數字)。即使PHP有一個整數限制,你也會期望整個數值變成最大INT。相反,只有最後六位數字會受到影響。 – lasavior
我的猜測是你的數字太大而不適合int,並且被轉換爲浮點數。這會導致您看到的精度損失。 – NullUserException