Decimal

Ondalık değerin temsili (ör. 2.5). İstemciler, değerleri Java'nın [BigDecimal][] veya Python'un [ondalık.Decimal][] gibi dile özgü ondalık biçimlere dönüştürebilir.

[BigDecimal]: https://docs.oracle.com/tr/java/javase/11/docs/api/java.base/java/math/BigDecimal.html [ondalık.Ondalık]: https://docs.python.org/3/library/ ondalık.html

JSON gösterimi
{
  "value": string
}
Alanlar
value

string

Dize cinsinden ondalık değer.

Dize temsili, isteğe bağlı bir + (U+002B) veya - (U+002D) ve ardından sıfır veya daha fazla ondalık basamak ("tam sayı") ve isteğe bağlı olarak bir kesir işareti ile isteğe bağlı olarak bir üssü içerir. Boş bir dize 0 olarak yorumlanmalıdır.

Kesir, ondalık noktadan ve sonrasında sıfır veya daha fazla ondalık basamakdan oluşur. Dize, tam sayı veya kesirde en az bir rakam içermelidir. İşaretin oluşturduğu sayı, tam sayı ve kesir, anlamlı sayı olarak adlandırılır.

Üs, e (U+0065) veya E (U+0045) karakteri ve ardından bir veya daha fazla ondalık basamaktan oluşur.

Hizmetler, ondalık değerleri saklamadan önce aşağıdaki ölçütlere göre normalleştirmelidir:

  • Açıkça sağlanan bir + işaretinin kaldırılması (+2.5 -> 2.5).
  • Sıfır uzunluktaki bir tam sayı değerini 0 (.5 -> 0.5) ile değiştiriyoruz.
  • Üs karakterini büyük harfle, açık işaretiyle (2.5e8 -> 2.5E+8) zorluyor.
  • Açıkça sağlanan sıfır üssü kaldırma (2.5E0 -> 2.5).

Hizmetler, ondalık basamağı ve üs değerini birlikte değiştirme gibi seçili onluk bir uygulamaya ve kendi gereksinimlerine göre ek normalleştirme yapabilir (örnek: 2.5E-1 <-> 0.25). Ayrıca, hizmetler artan hassasiyeti belirtmek için kesirin sonuncu sıfırını koruyabilir, ancak bu zorunlu değildir.

Tam sayı ve kesirin bölünmesi için yalnızca . karakterinin desteklendiğini unutmayın. ,, yerel ayardan bağımsız olarak desteklenmemelidir. Ayrıca binlik ayırıcılar da desteklenmemelidir. Bir hizmet bunları destekliyorsa değerler normalleştirilmeli olmalıdır.

ENBF dilbilgisi:

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' };

Hizmetler, desteklenen değer aralığını, desteklenen maksimum kesinliği (toplam basamak sayısı) ve varsa ölçeği (ondalık noktasından sonraki basamak sayısı) ve kapsam dışında değerler alırken nasıl davrandığını açıkça belirlemelidir.

Hizmetler, girilen değerden hizmetin desteklediğinden daha yüksek bir hassasiyet veya ölçeğe sahip olsa bile giriş olarak iletilen değerleri kabul etmeyi seçebilir ve bu değeri desteklenen ölçekten yararlanmak için yuvarlama gerekir. Alternatif olarak, hassasiyet kaybedilirse hizmet 400 Bad Request (gTB'de INVALID_ARGUMENT) hatasıyla hata verebilir.

Hizmet, desteklenen aralığın dışında bir değer alıyorsa hizmetler 400 Bad Request (gpc'de INVALID_ARGUMENT) ile hata içermelidir.