欧美性受XXXX黑人XYX性爽_欧美性做爰又大又粗又长_欧美MV日韩MV国产网站_欧美性猛交XXXX乱大交3_国产欧美熟妇另类久久久_日本欧美久久久久免费播放网_少妇性BBB搡BBB爽爽爽欧美

福州網站建設>網站新聞>php技術

踩坑之json_encode精度丟失問題

發布日期:2022-01-12瀏覽次數:1083 來源:福州網站建設

1.前言
最近在工作中,后臺出現了這樣的錯誤,傳遞的手續費是29塊錢,但是傳遞到了第三方接口就報錯了,查看日志顯示該手續費變成了28.999999999999996,日志如下:






明明是29怎么就變了?通過斷點檢測,原來是json_encode()轉換的問題


2.案例演示
$param={


‘amount’=>5000,


‘fee’=>29


}


var_dump(json_encode($param));//{"amount":5000,"fee":28.999999999999999999996}
3.解決方法
3.1方法1:強行轉換成字符串保證精度
$request['param']['feeAmount']=(string)$request['param']['feeAmount'];


注意:使用這種方法千萬要注意,對接接口是否有變量類型要求


3.2方法2:格式化數字number_format函數
number_format(number,decimals,decimalpoint,separator)


參數:


number參數是要格式化的數據
decimals參數是保留的小數
decimalpoint參數是規定用作小數點的字符串
separator參數是規定用作千位分隔符的字符串
案例:
$request['param']['feeAmount']=(int)number_format($request['param']['feeAmount'],0);


注意:number_format返回的是字符串string,要注意接口是否有規范要求,如果有,則須強行轉換為int或接口規范的類型


疑問1:這時候應該有人在想能不能直接強制轉換為int呢?注意,float強制轉換成int有坑!


答:int類型是向下取整的,比如:12910.9 會被轉換為 12910


疑問2:這時就會有人問我,浮點數顯示的是8,為什么轉換成整數會變成7?


答:floor((0.1+0.7)*10),其結果是7而不是8,是因為該結果內部表示的是7.9999.....所以不要相信浮點數結果精確,也不要比較兩個浮點數是否相等
3.3方法3:修改配置項serialize_precision
json_encode() 轉換浮點小數溢出現象只出現在PHP 7.1+版本,是因為php源碼對于json_encode()轉換使用到了serialize_precision配置項,如下圖


static inline void php_json_encode_double(smart_str *buf, double d, int options) /* {{{ */
{
    size_t len;
    char num[PHP_DOUBLE_MAX_LENGTH];
    php_gcvt(d, (int)PG(serialize_precision), '.', 'e', num);
    len = strlen(num);
    if (options & PHP_JSON_PRESERVE_ZERO_FRACTION && strchr(num, '.') == NULL && len < PHP_DOUBLE_MAX_LENGTH - 2) {
        num[len++] = '.';
        num[len++] = '0';
        num[len] = '\0';
    }
    smart_str_appendl(buf, num, len);
}
關于PHP函數serialize_precision (integer)的一些概念了解:


適用范圍:PHP_INI_ALL;


默認值:100


serialize_precision指令的數量決定了雙打和彩車被序列化后的浮點數字存儲。設置到一個合適的值,確保精度的數字時,可能丟失以后反序列化。所以我們要使得json_encode()轉換浮點數沒有小數溢出,建議使用默認值 serialize_precision = -1 即可 。


3.4知識點補充
json_encode有個選項JSON_PRESERVE_ZERO_FRACTION,表示如果是個整數, 是否保留小數點和尾數0,舉例如下:


<?php
echo json_encode(223.0);// 223
echo json_encode(223.0, JSON_PRESERVE_ZERO_FRACTION);// 223.0
3.5其他取整函數
四舍五入取整 round(param)
向上取整 ceil(param)
向下取整 floor(param)


4.bcsub()函數精度相減
格式:


string bcsub ( string $left_operand , string $right_operand [, int $scale = int ] )


說明:


2個任意精度數字的減法


參數:


left_operand:字符串類型的左操作數.


right_operand:字符串類型的右操作數.


scale:此可選參數用于設置結果中小數點后的小數位數。也可通過使用 bcscale() 來設置全局默認的小數位數,用于所有函數。


返回值:


返回減法之后結果為字符串類型.


代碼案例:


<?php
$a  =  '1.234' ;
$b  =  '5' ;
echo  bcsub ( $a ,  $b );      // -3
echo  bcsub ( $a ,  $b ,  4 );   // -3.7660
————————————————
版權聲明:本文為CSDN博主「拯救世界的派大星」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/m0_46266407/article/details/105556444

以上是由福州網站建設的小編為你分享了"踩坑之json_encode精度丟失問題"文章,如果你在這方面有什么問題,隨時聯系我們

php技術有關的文章
如果您有什么問題,歡迎咨詢我們客服! 點擊QQ咨詢
欧美激情一区二区三区中文字幕| 亚欧成人乱码一区二区| 精品国产亚洲一区二区三区| 九九九网站| 天天色成人网| 尤物视频网站在线| 国产激情一区二区三区| 亚洲wwwwww| 一级毛片视频免费| 久久精品欧美一区二区| 久久国产一区二区| 欧美另类videosbestsex久久| a级精品九九九大片免费看| 99久久精品国产高清一区二区| 九九久久99| 国产成人精品影视| 日韩欧美一二三区| 精品美女| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 免费一级片在线观看| 九九九国产| 超级乱淫黄漫画免费| 91麻豆国产福利精品| 欧美电影免费| 欧美一区二区三区性| 成人免费网站久久久| 欧美a级大片| 九九热精品免费观看| 国产福利免费观看| 黄色免费网站在线| 成人av在线播放| 黄色福利片| 国产成人啪精品| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 精品视频免费观看| 国产麻豆精品| 一本高清在线| 成人影视在线播放| 国产网站麻豆精品视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产精品自拍亚洲| 日韩免费片| 色综合久久天天综合| 色综合久久天天综合绕观看| 精品久久久久久影院免费| 日韩av东京社区男人的天堂| 久草免费在线视频| 日韩免费在线视频| 国产一区二区精品久| 久久精品大片| 国产一区免费观看| 久久成人性色生活片| 99色精品| 99热精品在线| 国产网站免费视频| 麻豆网站在线免费观看| 一本伊大人香蕉高清在线观看| 精品国产一区二区三区精东影业| 四虎久久影院| 亚洲天堂免费| 亚洲精品永久一区| 日本乱中文字幕系列| 可以在线看黄的网站| 99久久精品费精品国产一区二区| 国产伦理精品| 国产一区二区福利久久| 99久久精品国产免费| 欧美激情一区二区三区在线| 久草免费资源| 91麻豆国产| 欧美激情影院| 午夜在线亚洲男人午在线| 成人免费观看的视频黄页| 毛片的网站| 国产原创中文字幕| 免费毛片播放| 青青青草影院 | 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产极品精频在线观看| 日韩中文字幕在线播放| 深夜做爰性大片中文| 99色视频在线| 亚洲女人国产香蕉久久精品| 99久久精品费精品国产一区二区| 欧美激情中文字幕一区二区| 精品国产一区二区三区久| 国产91视频网| 国产网站免费在线观看| 韩国三级香港三级日本三级la| 免费一级生活片| 亚洲女初尝黑人巨高清在线观看| 国产一级生活片| 国产伦精品一区二区三区无广告| 国产激情视频在线观看| 日韩一级精品视频在线观看| 国产国语对白一级毛片| 一本伊大人香蕉高清在线观看| 日本伦理网站| 国产一级强片在线观看| 日韩在线观看视频黄| 免费国产在线观看| 午夜激情视频在线播放| 天天做日日干| 999精品影视在线观看| 精品视频在线看| 国产原创中文字幕| 四虎影视久久| 欧美电影免费| 国产麻豆精品hdvideoss| 欧美另类videosbestsex久久| 亚洲精品影院久久久久久| 欧美激情一区二区三区视频高清| 久久99中文字幕| 国产一区免费在线观看| 成人在激情在线视频| 99色视频在线| 四虎久久影院| 91麻豆精品国产综合久久久| 二级片在线观看| 国产高清在线精品一区二区 | 精品视频在线看 | 尤物视频网站在线| 九九免费高清在线观看视频| 久久国产精品自线拍免费| 日韩中文字幕在线观看视频| 国产视频久久久久| 人人干人人插| 久久99中文字幕| 国产不卡精品一区二区三区| 韩国毛片免费大片| 日本伦理黄色大片在线观看网站| 精品国产亚洲一区二区三区| 精品在线免费播放| 国产不卡精品一区二区三区| 亚州视频一区二区| 精品视频在线观看一区二区三区| 韩国三级香港三级日本三级| 你懂的日韩| 午夜在线亚洲| 国产成人精品影视| 九九国产| 国产伦久视频免费观看视频| 亚洲精品中文字幕久久久久久| 亚欧视频在线| 精品视频一区二区| 九九精品久久| 国产一区二区精品| 成人在激情在线视频| 国产原创中文字幕| 国产视频一区二区在线观看| 香蕉视频亚洲一级| 可以在线看黄的网站| 成人a大片在线观看| 国产视频网站在线观看| 国产成人精品综合在线| 欧美1卡一卡二卡三新区| 成人免费福利片在线观看| 日韩在线观看视频黄| 黄视频网站在线观看| 久久国产一久久高清| 青青久久精品| 国产伦理精品| 精品国产亚一区二区三区| 91麻豆精品国产综合久久久| 精品国产香蕉在线播出 | 午夜在线观看视频免费 成人| 久久国产精品自线拍免费| 亚洲精品久久久中文字| 久久99青青久久99久久| 成人免费高清视频| 日韩专区一区| 国产精品123| 九九久久99综合一区二区| 国产原创中文字幕| 欧美日本免费| 青青青草影院| 91麻豆精品国产自产在线观看一区 | 精品视频在线观看视频免费视频| 国产美女在线观看| 九九九国产| 国产麻豆精品免费视频| 亚洲精品影院| 亚洲女人国产香蕉久久精品 | 国产精品12| 久久99中文字幕| 久久福利影视| 夜夜操网| 欧美激情在线精品video| 免费国产在线视频| 亚洲 国产精品 日韩| 精品国产三级a| 日韩免费在线视频| 欧美国产日韩一区二区三区| 午夜在线观看视频免费 成人| 国产国产人免费视频成69堂| 国产一区二区精品在线观看| 欧美日本免费| 日韩专区一区| 午夜在线亚洲| 九九久久国产精品|