我在 post 請求中收到了一些資料,包括一個來自 api 的十進制數 content-type:json
貼出的資料中,有一個Amount小數點后4位的引數
{
"Amount": 500.0000 ,
"param1" : "value1" ,
"param2" : "value2"
}
決議json后
$data = json_decode(file_get_contents('php://input'), true);
var_dump($data);
這是我的輸出
array(3) {
["Amount"]=>
float(500)
["param1"]=>
string(6) "value1"
["param2"]=>
string(6) "value2"
}
問題是如果金額為零,我會丟失金額的小數位
所以,而不是500.0000我得到500,我知道它們在數學上是相同的數字,但我需要從這些發布的引數中生成一個散列,這要求我將Amount浮點數作為一個帶有 4 個小數位的浮點數,與最初發布的完全一樣
我可以做類似的事情
$data['Amount'] = sprintf('%0.4f', $data['Amount'] );
但它會將 Amount 轉換為字串,從而導致無效的哈希值
array(3) {
["Amount"]=>
string(8) "500.0000"
["param1"]=>
string(6) "value1"
["param2"]=>
string(6) "value2"
}
我需要我的 $data 輸出
["Amount"]=>
float(500.0000)
試圖運行它拋出 floatval,再次丟失十進制零!我對這么簡單的事情失去了理智,知道如何解決這個問題嗎?
uj5u.com熱心網友回復:
在 C# 中,您可以使用decimal型別而不是doubleor來執行此操作float。雖然我的 PHP 知識有限,但看起來 PHP 世界在 BC Math 和 PHP Decimal 中有類似的東西。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types https://www.php.net/manual/en/book.bc .php https://php-decimal.io/
uj5u.com熱心網友回復:
使用內置的 number_format 函式。
https://www.w3schools.com/php/func_string_number_format.asp
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326501.html
