从后端接数据,number类型的数据,后面的无效0被自动舍掉了

后端接口返回的数据

{"code":0,"msg":"","data":{"invoiceOfElectronic":false,"invoiceUrl":"","ticketTime":1571736864000,"goodsDetails":[{"goodsName":"德力西电气 漏电塑壳断路器;DZ15LE-40T/4901  32A 30mA 透明","buyNo":"DZ15LE40T324S","model":"DZ15LE-40T/490","unit":"个","orderNum":1,"salesPrice":161.710000,"salesAmount":161.710000,"taxRate":13.00,"taxAmount":18.600000},{"goodsName":"WN-虚拟品2-0825","buyNo":"","model":"","unit":"副","orderNum":1,"salesPrice":15.000000,"salesAmount":15.000000,"taxRate":2.30,"taxAmount":0.340000}],"goodsSalesAmountCount":176.710000,"goodsTaxAmountCount":18.940000},"ticket":null,"weexVs":null}

看,数据后面是有0的,比如"goodsTaxAmountCount":18.940000,这个字段值是number类型,但是,我前端接的时候,自动舍掉了后面无效的0
图片说明

为什么前端接的时候会把后面的0丢掉,并且怎么才能不丢失的接到后端传过来的数据

我最近也遇到这个问题了,13.00会被格式化为13。是因为axios中的默认transformReponse使用了JSON.parse。JSON.parse会舍去小点后的0。

axios源码node_modules/_axios@0.21.1@axios/lib/defaults.js

transformResponse: [function transformResponse(data) {
    /*eslint no-param-reassign:0*/
    if (typeof data === 'string') {
      try {
        data = JSON.parse(data);
      } catch (e) { /* Ignore */ }
    }
    return data;
  }],

只能是后端把浮点数转成字符串传给前端,或者前端特殊处理加上小数显示。没有别的好办法.

JS里面数值一旦进行计算,好像就不会留小数点后有效值以后的0,如果传回来的值确定小数长度的话,tofix能最简单的帮你保留小数

这个问题还真没遇到过, 让后端把数字换成字符串应该能解决

前后端数据交互,数据应该都是json类型,json类型就是字符串,不会对数据有什么省略的情况,你可以看看你是怎么接值的,或者确定一下前后端数据交互的格式