在后台php中,金额保留两位小数。可是前端显示精度丢失,出现了14位小数的奇怪现象。原本觉得是前端js解析以后出现的问题。检查以后发现json_encode()以后就出现了。
原始的值:php
array(4) { ["data"]=> array(2) { ["saled"]=> object(Illuminate\Database\Eloquent\Collection)#1235 (1) { ["items":protected]=> array(0) { } } ["money"]=> array(3) { ["maket_total"]=> float(16794.48) ["voucher_total"]=> string(6) "744.00" ["favorable_total"]=> float(509.46) } } ["status"]=> int(0) ["msg"]=> string(12) "操做成功" ["total"]=> int(0) }
json_encode()以后:string(170) "{"data":{"saled":[],"money":{"maket_total":16794.48,"voucher_total":"744.00","favorable_total":509.46000000000004}},"status":0,"msg":"\u64cd\u4f5c\u6210\u529f","total":0}"
前端
这个字段favorable_total
已经变成14位小数了。网上搜了一下,能够经过转化位string类型来避免。关于缘由,能够看下面两个回答:json
https://stackoverflow.com/questions/42981409/php7-1-json-encode-float-issue#comment73056244_42981409php7
https://stackoverflow.com/questions/3726721/php-floating-number-precisioncode