淺談各種語言輸出函式小數點 00 返回問題

hedeqiang發表於2019-09-21

淺談各種語言輸出函式

今天在群裡 一個小夥伴 [@科大大](https://learnku.com/users/11914) 問到如下的問題

PHP json_encode() 會去掉小數點為00 的字尾

<?php

$num = [
    "a" => 20.00,
    "b" => 39.78,
];
echo json_encode($num);
// {"a":20,"b":39.78}

可以看到 20.00 返回了 20 。然後我就試了下引發瞭如下的疑惑

我們拿 數字型別 舉例例如:66.00,這個數值在各種語言上會輸出什麼結果

php

echo 66.00;
// 66

JavaScript

console.log(66.00);
// 66

Java

System.out.println(66.00);
// 66.0

Python

print(66.00)
// 66.0

C#

Console.WriteLine(66.00);
// 66

拿 PHP 來說,想讓他輸出 66.00,還真不好處理,我沒有找到解決方案。

如果非要返回.00 ,可以有以下幾種方案.但是這將會改變資料型別,變為字串

$num = sprintf("%1\$.2f", 66.00);
var_dump($num);
// string(4) "66.00"

或者

$num = number_format(66.00,2,'.','');
var_dump($num);
// string(5) "66.00"

可以看到 返回的資料型別都轉成 字串了,這其實並不對。至於怎麼還保持原資料型別,希望各位大佬能有解決方案。給小弟留言。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章