Я задаюсь следующие точки обозначения чисел с плавающей является ли допустимым JSON обозначения:JSON стандартные - числа с плавающей точкой
"result":{"base_fee":1e-005}
или если показатель обозначения заменить на десятичной системе счисления?
Я задаюсь следующие точки обозначения чисел с плавающей является ли допустимым JSON обозначения:JSON стандартные - числа с плавающей точкой
"result":{"base_fee":1e-005}
или если показатель обозначения заменить на десятичной системе счисления?
Он действителен в соответствии с форматом, доступным по адресу json.org, поскольку числа могут необязательно иметь показатель основания 10, обозначенный E, прописным или строчным регистром, необязательный плюс или минус и одну или несколько цифр.
Это вполне допустимо, в соответствии с RFC 4627RFC 7159 *:
Представление чисел аналогична той, которая используется в большинстве языков программирования. Число содержит целочисленный компонент, который может содержать префикс с необязательным знаком «минус», за которым может следовать фракционная часть и/или экспоненциальная часть.
Октальные и шестигранные формы не допускаются. Ведущие нули не допускаются.
Дробная часть представляет собой десятичную точку, за которой следует одна или несколько цифр.
Экспоненциальная часть начинается с буквы E в верхнем или нижнем регистре, , за которой может следовать знак «плюс» или «минус». Знак E и необязательный знак сопровождаются одной или несколькими цифрами.
Числовые значения, которые не могут быть представлены в виде последовательностей цифр (например, Infinity и NaN), не допускаются.
Экспоненты разрешено иметь ведущие 0s, но не раздел целое:
number = [ minus ] int [ frac ] [ exp ]
decimal-point = %x2E ; .
digit1-9 = %x31-39 ; 1-9
e = %x65/%x45 ; e E
exp = e [ minus/plus ] 1*DIGIT
frac = decimal-point 1*DIGIT
int = zero/(digit1-9 *DIGIT)
minus = %x2D ; -
plus = %x2B ; +
zero = %x30 ; 0
* Стандарт RFC 7159 вытесняет в RFC 4627 информационную памятку, однако грамматика используется остается точно такой же.
В то время как из JSON (и JavaScript) в перспективе эти четыре цифрами
а) 100
б) 100.0
с) 1.0E+2
д) 1E+2
лишь четыре способа, чтобы написать точно такое же число, в средах, где целые числа и числа переменных являются разными типами чисел, они могут быть не все эквивалентными.
И хотя (а) ясно означает целое число, и (б) реальное и (в) реальное, случай (d) является немного неоднозначным: например, в C это плавающее число точечный литерал (потому что есть экспонента), но в Аде это число целых чисел (потому что нет десятичной точки).
И в ISO 6093:1985 «Обработка информации – Представления числовых значений в символьных строках для обмена информации», последний из которых является недействительным, а остальные три соответствуют три различимым форматам NR1, NR2 и NR3, определенных там.
Так что в целом — в JSON или в другом месте —, я бы предпочел и рекомендовал всегда включать десятичную точку в «научное» представление десятичной строки с показателем степени.
И поместить хотя бы одну цифру перед десятичной точкой (если таковая имеется), поскольку требуется JSON (и Ada, но не C), а ISO 6093 рекомендует (но не требует).
Просто во избежание недоразумений (среди людей) или проблем обмена данными (среди машин и программ).
Следуйте по железнодорожным путям по адресу http://json.org – user2864740