[英]PHP json_encode string to big float
由於 PHP 的浮點大小有限制(最多 14 位),我使用字符串來處理大浮點數,在我的例子中,我有 19 位實數和 2 位精度,我需要一個 JSON 編碼數組的解決方案其中包含這些數字,但也將它們從字符串類型轉換為浮點數。
使用JSON_NUMERIC_CHECK
標志無濟於事,因為數字太大
<?php
$array = array(
"big_float1" => "9876543210999999999.01",
"big_float2" => "9876543210999999999.01",
"float1" => 2.2
);
$json = json_encode($array,JSON_NUMERIC_CHECK);
?>
在上面的代碼中,我需要這樣的 JSON object {"big_float1": 9876543210999999999.01, "big_float2": 9876543210999999999.01, "float1": 2.2}
由於從字符串到浮點數的轉換需要由 PHP 完成,因此這是不可能的。 64 位 PHP 的最大 integer 值為 9223372036854775807,這比您需要的要少。 您可以嘗試兩種解決方法:
99999
和98765432109999
。 在接收端,您可以通過first_part * 10^5 + second_part
重新創建原始號碼PHP_INT_MIN + value1 + value2 + value4...
開始。 這樣您就可以使用整個 2^64 空間(小於 2^63 的值將為負數)。 唯一的就是在接收端加上2^64和小數部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.