强制数字 JSON 字段以避免科学记数法

时间:2021-01-28 02:03:09

标签: javascript

问题来了,只要数字字段 > 6 个小数位,打印时我们就会得到科学记数法。比如1.2345e-7(但是1.2345e-6就没有这个问题)。但是,在将我的值传递给我的消费者之前,我不想对 parseFloat(new Number(1.2345e-7 ).toFixed(7)) 进行舍入。注意,

A. Number/BigNumber.toFixed 返回一个字符串,而不是一个浮点数 与所有这些 toFixes 变体一样:How to avoid scientific notation for large numbers in JavaScript?

B. ParseFloat 将其转换回浮点数,但您再次拥有科学记数法

简单的例子。

var p2c = require('class-transformer'); 

class Fund {}
let fundJson = {
    "fund_code": "ABCDE",
    "ccy": "USD",
    "amount_fund_ccy": 0.00000012345,
    "amount_trx_ccy": 1.2345e-7
};

let fund = p2c.plainToClass(Fund, fundJson);
let fundJson2 = JSON.stringify(fund);

如果你打印它,

fundJson
{fund_code: 'ABCDE', ccy: 'USD', amount_fund_ccy: 1.2345e-7, amount_trx_ccy: 1.2345e-7}
fund
Fund {fund_code: 'ABCDE', ccy: 'USD', amount_fund_ccy: 1.2345e-7, amount_trx_ccy: 1.2345e-7}
fundJson2
'{"fund_code":"MLHE1U","ccy":"USD","amount_fund_ccy":1.2345e-7,"amount_trx_ccy":1.2345e-7}'

以上是我的 REST API 中的响应示例。我想避免使用科学记数法,但不确定如何去做。我可以 Number(1.2345e-7).toFixed(20)(到 20 位小数并保留所有数字)并作为 string 传回我的 REST 客户端,但金额字段将被引用,这会破坏我的 REST 消费者下游。

0 个答案:

没有答案