Decimal

दशमलव वैल्यू दिखाने वाला एक उदाहरण, जैसे कि 2.5. क्लाइंट, वैल्यू को भाषा के दशमलव फ़ॉर्मैट में बदल सकते हैं, जैसे कि Java का [BigDECimal][] या Python का [decimal.decimal][].

[Bigdecimal]: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDECimal.html [decimal.decimal]: https://docs.python.org/3/library/decimal.html

जेएसओएन के काेड में दिखाना
{
  "value": string
}
फ़ील्ड
value

string

स्ट्रिंग के तौर पर दशमलव मान.

स्ट्रिंग को दिखाने के लिए एक वैकल्पिक चिह्न, + (U+002B) या - (U+002D) होता है. इसके बाद, शून्य या ज़्यादा दशमलव अंकों ("पूर्णांक") का क्रम दिया जाता है और फिर एक अंश के बाद एक चरघातांक दिया जाता है. किसी खाली स्ट्रिंग को 0 समझना चाहिए.

अंश में दशमलव बिंदु और उसके बाद शून्य या ज़्यादा दशमलव अंक होते हैं. स्ट्रिंग में पूर्णांक या खंड का कम से कम एक अंक होना ज़रूरी है. अगर संख्या का चिह्न, पूर्णांक और फ़्रैक्शन होता है, तो उसे सिग्नेफ़िक यानी कि निशान के तौर पर दिखाया जाता है.

घातांक में e (U+0065) या E (U+0045) वर्ण होते हैं, जिसके बाद एक या ज़्यादा दशमलव अंक होते हैं.

सेवाओं को इन मानों को संग्रहित करने से पहले दशमलव मानों को सामान्य बनाना चाहिए:

  • साफ़ तौर से दिया गया + साइन (+2.5 -> 2.5) हटा रहा है.
  • 0 (.5 -> 0.5) के साथ शून्य-लंबाई वाला पूर्णांक मान बदल रहा है.
  • एक्सपोनेंट वर्ण को एक्सप्लिसिट साइन (2.5e8 -> 2.5E+8) के साथ रखते हुए, अंग्रेज़ी के बड़े अक्षरों में लिखें.
  • साफ़ तौर पर दिया गया ज़ीरो एक्सपोनेंट (2.5E0 -> 2.5) हटाना.

सेवाएं अपनी ज़रूरतों और चुने गए अंदरूनी दशमलव तरीके को लागू करने के आधार पर अतिरिक्त नॉर्मलाइज़ेशन कर सकती हैं, जैसे कि दशमलव बिंदु और घातांक वैल्यू को एक साथ शिफ़्ट करना (उदाहरण: 2.5E-1 <-> 0.25). इसके अलावा, सेवाओं में ज़्यादा सटीक जानकारी दिखाने के लिए, फ़्रैक्शन के पीछे के शून्यों को सुरक्षित रखा जा सकता है, लेकिन ऐसा करने की ज़रूरत नहीं होती.

ध्यान दें कि पूर्णांक और फ़्रैक्शन को बांटने के लिए, सिर्फ़ . वर्ण का इस्तेमाल किया जा सकता है. , को स्थान-भाषा पर ध्यान दिए बिना नहीं काम करना चाहिए. इसके अलावा, हज़ार वाले विभाजक काम नहीं कर सकते. अगर कोई सेवा उनकी मदद करती है, तो वैल्यू सामान्य में होनी चाहिए.

ENBF व्याकरण यह है:

DecimalString =
  '' | [Sign] Significand [Exponent];

Sign = '+' | '-';

Significand =
  Digits ['.'] [Digits] | [Digits] '.' Digits;

Exponent = ('e' | 'E') [Sign] Digits;

Digits = { '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' };

सेवाओं को मान्य वैल्यू की रेंज, ज़्यादा से ज़्यादा सटीक जानकारी (अंक की कुल संख्या) और अगर लागू हो, तो स्केल (दशमलव के बाद अंकों की संख्या) के साथ-साथ, आउट-ऑफ़-बाउंड वैल्यू पाने पर काम करने का तरीका भी बताना चाहिए.

सेवाओं को इनपुट के रूप में पास किए जाने वाले उन मानों को स्वीकार करना हो सकता है जब सेवा की सहायता से ज़्यादा सटीक या स्केल वाला मान हो, और समर्थित स्केल में फ़िट करने के लिए मान को राउंड करना चाहिए. इसके अलावा, अगर सटीक जानकारी नहीं दी जाती है, तो सेवा 400 Bad Request (gRPC में INVALID_ARGUMENT) से जुड़ी गड़बड़ी हो सकती है.

अगर सेवा को समर्थित सीमा के बाहर कोई मान मिलता है तो सेवाओं को 400 Bad Request (gRPC में INVALID_ARGUMENT) के साथ गड़बड़ी होनी चाहिए.