问题来了,只要数字字段 > 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 消费者下游。