文件中格式化科学记数法"/>
node.js 在json文件中格式化科学记数法
我正在处理一个 JSON 文件,其中包含以科学计数法格式化的数字,小数位数固定,如下所示:
{"value": 2.421500000000000e+04 }
我的 node.js 应用程序读取这个 JSON 文件,更改一些值并重写文件。该文件稍后将由需要此特定 JSON 格式的不同应用程序使用。
这个科学计数法的数值可以很容易地通过解析JSON读取为数字,但我一直无法编写它。如果写成数字,则不保留科学记数法和固定小数。如果以科学记数法格式化,则该值被写为字符串并用双引号引起来。我愿意:
- 保存为具有固定小数位的科学记数法格式的数字
- 保存为不带引号的字符串
有办法做到这些吗?
我发现这个问题问的差不多,但如果格式不能改变,它实际上没有答案。我要实现的不是维护解析出来的数字的格式而是能够按照上面的格式写一个数字
回答如下:需要这种特定的 JSON 格式
其他应用程序似乎提出了一个奇怪的要求。
但是做@CBroe 提到的事情,你可以在 stringify 方法中使用替换器,并使用一些
magic
标签,然后你可以修剪掉不需要的 "
..
例如
var obj = {"value": 2.421500000000000e+04 };
const magic = '||';
function expNum(n) {
const k = n.toExponential().split('e');
const k2 = k[1].split('+');
return `${magic}${k[0].padEnd(17, '0')}e+${k2[1].padStart(2,'0')}${magic}`;
}
function showIt() {
const output = JSON.stringify(obj,
(key, value) => {
if (typeof value === 'number')
return expNum(value)
else return value
}, ' ')
.replaceAll(`"${magic}`,'')
.replaceAll(`${magic}"`,'');
console.log(output);
}
showIt();
console.log('multiply by 700000');
obj.value *= 700000;
showIt();
更多推荐
node.js 在json文件中格式化科学记数法
发布评论