JSON मानक-फ्लोटिंग पॉइंट नंबर




floating-point standards (3)

मैं सोच रहा हूँ कि क्या निम्न फ़्लोटिंग पॉइंट नोटेशन एक मान्य JSON संकेतन है:

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

या प्रतिपादक अंकन को दशमलव संकेतन से बदला जाना चाहिए?


यह json.org पर उपलब्ध प्रारूप के अनुसार मान्य है क्योंकि संख्याओं में वैकल्पिक रूप से एक E, अपरकेस या लोअरकेस, एक वैकल्पिक प्लस या माइनस, और एक या अधिक अंकों द्वारा निरूपित आधार 10 घातांक हो सकते हैं।


यह पूरी तरह से मान्य है, के अनुसार आरएफसी 4627 RFC 7159 *:

संख्याओं का प्रतिनिधित्व उसी के समान है जिसका उपयोग अधिकांश प्रोग्रामिंग भाषाओं में किया जाता है। एक संख्या में एक पूर्णांक घटक होता है जिसे एक वैकल्पिक ऋण चिह्न के साथ उपसर्ग किया जा सकता है, जिसका एक अंश भाग और / या एक प्रतिपादक भाग हो सकता है।

ऑक्टल और हेक्स रूपों की अनुमति नहीं है। अग्रणी शून्य की अनुमति नहीं है।

एक अंश भाग एक दशमलव बिंदु है जिसके बाद एक या अधिक अंक होते हैं।

एक एक्सपोनेंट पार्ट ऊपरी या निचले हिस्से में ई अक्षर से शुरू होता है, जिसे प्लस या माइनस साइन के बाद किया जा सकता है। E और वैकल्पिक चिह्न का अनुसरण एक या अधिक अंकों के साथ किया जाता है।

संख्यात्मक मान जिन्हें अंकों के अनुक्रम के रूप में नहीं दिखाया जा सकता है (जैसे कि इन्फिनिटी और 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 (और जावास्क्रिप्ट) परिप्रेक्ष्य से ये चार अंक हैं

ए) 100
b) 100.0
c) 1.0E+2
d) 1E+2

ठीक उसी संख्या को लिखने के लिए चार तरीके हैं, ऐसे वातावरण में जहां पूर्णांक और वास्तविक अलग-अलग प्रकार के नंबर हैं, जो सभी समान नहीं हो सकते हैं।

और जबकि (ए) स्पष्ट रूप से एक पूर्णांक का अर्थ है, और (बी) एक वास्तविक, और (सी) एक वास्तविक भी है, मामला (डी) थोड़ा अस्पष्ट है: उदाहरण के लिए, सी में यह एक अस्थायी बिंदु शाब्दिक है (क्योंकि वहां है) एक प्रतिपादक), लेकिन Ada में यह पूर्णांक शाब्दिक है (क्योंकि कोई दशमलव बिंदु नहीं है)।

और आईएसओ 6093: 1985 में "सूचना प्रसंस्करण - सूचना के आदान-प्रदान के लिए वर्ण स्ट्रिंग में संख्यात्मक मूल्यों का प्रतिनिधित्व", अंतिम एक अमान्य है , जबकि अन्य तीन तीन अलग-अलग स्वरूपों NR1, NR2, और NR3 के अनुरूप हैं।

इसलिए सामान्य रूप से JSON या अन्य जगहों पर-, मैं हमेशा पसंद करूंगा और एक एक्सपोजर के साथ "वैज्ञानिक" दशमलव स्ट्रिंग प्रतिनिधित्व में एक दशमलव बिंदु को शामिल करने की सलाह दूंगा।

और दशमलव बिंदु (यदि कोई है) के सामने कम से कम एक अंक रखने के लिए, जैसा कि JSON (और Ada, लेकिन C नहीं) की आवश्यकता है और ISO 6093 अनुशंसा करता है (लेकिन आवश्यकता नहीं है)।

बस गलतफहमी (मनुष्यों के बीच) या डेटा विनिमय बाधाओं (मशीनों और कार्यक्रमों के बीच) से बचने के लिए।





exponent