Decimal

نمایش یک مقدار اعشاری، مانند 2.5. کلاینت ها ممکن است مقادیر را به فرمت های اعشاری بومی زبان، مانند [BigDecimal][] جاوا یا [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

نمایندگی JSON
{
  "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 ( INVALID_ARGUMENT در gRPC) خطا کند.

اگر سرویس مقداری خارج از محدوده پشتیبانی شده دریافت کند، سرویس ها باید با 400 Bad Request ( INVALID_ARGUMENT در gRPC) خطا کنند.