programing

JSON 표준 - 부동 소수점 수

css3 2023. 3. 26. 11:39

JSON 표준 - 부동 소수점 수

다음 부동소수점 표기법이 유효한 JSON 표기법인지 궁금합니다.

"result":{"base_fee":1e-005}

또는 지수 표기법을 10진 표기로 대체해야 하는가?

json.org 에서 구할 수 있는 형식에 따라 유효합니다.숫자에는 E, 대문자 또는 소문자, 옵션의 더하기 또는 빼기 및1개 이상의 숫자를 사용할 수 있습니다.

JSON 번호 형식의 이미지

JSON(및 JavaScript)의 관점에서 보면 이 4개의 숫자는

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 등에서는 "과학적인" 10진수 문자열 표현에 항상 소수점을 지수로 포함시키는 것이 좋습니다.

또한 JSON(및 Ada, C는 필요 없음) 및 ISO 6093에서 권장하는 대로 소수점 앞에 최소 한 자리(있는 경우)를 배치해야 합니다.

오해나 데이터 교환의 번거로움(기계나 프로그램)을 피하기 위해서입니다.

이는 RFC 4627 RFC 7159*에 따라 완벽하게 유효합니다.

숫자의 표현은 대부분의 프로그래밍 언어에서 사용되는 것과 유사합니다.숫자는 임의의 마이너스 부호를 앞에 붙일 수 있는 정수 성분을 포함하고, 그 뒤에 분수 부분 및/또는 지수 부분이 뒤따를 수 있다.

8진수 및 16진수 형식은 허용되지 않습니다.선행 0은 허용되지 않습니다.

분수 부분은 소수점 뒤에 하나 이상의 숫자가 이어지는 것입니다.

지수 부분은 대문자 또는 소문자 E로 시작하며, 그 뒤에 플러스 기호 또는 마이너스 기호가 붙을 수 있습니다.E 및 옵션 기호 뒤에는 1자리 이상의 숫자가 붙습니다.

숫자 시퀀스(예: 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

* RFC 7159 표준은 RFC 4627 정보 메모보다 우선하지만 사용된 문법은 완전히 동일합니다.

언급URL : https://stackoverflow.com/questions/19554972/json-standard-floating-point-numbers