The*_*chu 42 floating-point standards json exponent
我想知道以下浮点表示法是否是有效的JSON表示法:
"result":{"base_fee":1e-005}
Run Code Online (Sandbox Code Playgroud)
或者指数符号应该用十进制表示法替换?
Qan*_*avy 12
数字的表示类似于大多数编程语言中使用的数字.数字包含一个整数分量,该整数分量可以带有一个可选的减号前缀,后面可以跟一个分数部分和/或一个指数部分.
不允许使用八进制和十六进制形式.不允许前导零.
小数部分是小数点后跟一个或多个数字.
指数部分以大写或小写字母E开头,后跟加号或减号.E和可选符号后跟一个或多个数字.
不允许使用不能表示为数字序列(例如Infinity和NaN)的数字值.
允许指数具有前导0,但不允许具有整数部分:
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
Run Code Online (Sandbox Code Playgroud)
*RFC 7159标准取代了RFC 4627信息备忘录,但使用的语法保持完全相同.
小智 11
虽然从JSON(和JavaScript)的角度来看这四个数字
a)100
b)100.0
c)1.0E+2
d)1E+2
只有四种方法可以写出完全相同的数字,在整数和实数是不同类型的数字的环境中,它们可能并不都是等价的.
虽然(a)清楚地表示一个整数,(b)一个实数,(c)一个实数,但情况(d)有点模棱两可:例如,在C中这是一个浮点字面值(因为有一个指数),但在Ada中它是一个整数文字(因为没有小数点).
并且在ISO 6093:1985 "信息处理 - 用于信息交换的字符串中的数值表示"中,最后一个是无效的,而其他三个对应于那里定义的三种可区分格式NR1,NR2和NR3.
所以一般来说,在JSON或其他地方 - 我更喜欢并建议在带有指数的"科学"十进制字符串表示中始终包含小数点.
并且在小数点前面放置至少一个数字(如果有的话),如JSON(和Ada,但不是C)要求和ISO 6093建议(但不要求).
只是为了避免(人类之间)或数据交换麻烦(机器和程序之间)的误解.
归档时间: |
|
查看次数: |
61093 次 |
最近记录: |