Разобрать число с плавающей запятой в JSON в JavaScript также для 1 как 1,00
Ситуация: мой датчик измеряет данные, которые я обрабатываю в NodeRED-функции и затем анализирую в JSON-объект. NodeRED-функция позволяет мне писать JavaScript-код. JSON-объект отправляется в принимающий модуль, написанный на C++, который работает на JSON с библиотекой JSON_spirit. Я не могу изменить приемный модуль.
Проблема: получающее приложение пытается получить одно значение JSOn с помощью функции value.get_float()
, Датчики иногда измеряют точный 1,00. Это передается в JSON как {"value":1}
, Принимающий модуль завершается с ошибкой:
terminate called after throwing an instance of 'std::runtime_error'
what(): get_value< real > called on integer Value
Очевидно, функция value.get_float()
Кажется, не может изменить 1 на 1,0, и, как уже упоминалось, я не могу изменить используемую функцию. Итак, мне нужно найти способ разобрать {"value":1.00}
в JSON.
Что я пробовал: я пытался в моей функции NodeRED value.toFixed(2)
но это вернет строку {"value":"1.00"}
, Итак, я попытался снова разобрать строку как число с плавающей точкой, как это
value.toFixed(2);
value = parseFloat(value);
Но это привело бы к 1,00 снова JSON, как это: {"value":1}
, Я также попробовал некоторые уловки с округлением, но как только JavaScript может опустить ненужные десятичные числа, это делает. Итак, я еще не нашел решение.
Любые идеи приветствуются.
PS: Это мой первый вопрос Stackru, так что, пожалуйста, не будьте слишком резкими со мной:)
Изменить: я нашел следующий обходной путь. я использую value.toFixed(2);
в первую очередь, чтобы получить {"value":"1.00"}
, Позже я использую регулярное выражение для строки в узле изменения в NodeRED.
RegEx:
"Value":\"(\d+\.\d{2})\"
Заменить:
"Value":$1
Мой реальный случай был немного сложнее, чем пример, поэтому регулярное выражение было немного длиннее. Но regex101 очень помог.
1 ответ
Думаю, этот пост уже был там: Принудительное значение с плавающей запятой при использовании JSON.stringify
Так что я думаю, что в Javascript нет разницы между 1 и 1,0