@ont0shko

Как задать формат вывода чисел с плавующей точкой в JSON.stringify?

Есть исходный JSON в котором:
{
   "value": 0.020
}


Я его читаю, обрабатываю и снова записываю в файл с помощью fs.writeFile('some.json', JSON.stringify(data), ...)

В результате в файл пишется:
{
   "value": 0.02
}


Как мне вернуть формат значения 0.020?
  • Вопрос задан
  • 634 просмотра
Пригласить эксперта
Ответы на вопрос 2
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Прочитав про JSON.stringify, можно увидеть параметр replacer — функцию, которая может изменить формат вывода.

var x = {
	y: 0.020,
	z: 0.12345
};

console.log(JSON.stringify(x, function(key, value) {
	return typeof value == 'number' ? value.toFixed(3) : value;
})); // "{"y":"0.020","z":"0.123"}"

Однако, тем самым вы измените тип значения, поскольку все наследуемые методы Number (безусловно, за исключением valueOf) вернут строку. А любая попытка превратить строку в число обрежет незначащие разряды.

console.log(JSON.stringify(x, function(key, value) {
	return typeof value == 'number' ? Number(value.toFixed(3)) : value;
})); // "{"y":0.02,"z":0.123}"
Ответ написан
Комментировать
MarcusAurelius
@MarcusAurelius
автор Impress Application Server для Node.js
Это делать не нужно, все форматирование и украшательства нужно производить при ввводе на экран, потому, что не значащие разряды все равно будут игнорироваться парсерами, и нет разницы, бужет ли в json написано 0.02 или 0.020. Если хотите потом считать именно 0.02, то записывайте строку, а не число.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы