[Fikir] Native Decimal Tipi (Ondalıklı Sayılarda Hassasiyet) #84

Open
opened 2026-06-14 22:14:01 +03:00 by saqut · 0 comments
Owner

Giriş (Nedir, Neden Önemli?)

float/double ikili (binary) kayan-nokta sayılardır ve ondalık kesirleri (örn. 0.1) tam temsil edemez — bu, para/finans hesaplamalarında hatalara yol açar. Birçok modern dil (C#, Python Decimal) bunun için ayrı bir decimal (ondalık) tip sunar.


Gelişme (Olası Yaklaşımlar)

  • decimal yeni bir primitif TypeKind olarak src/core/type.hpp'ye eklenebilir (Faz 0'ın Type sınıfı genişletilebilir tasarlanmalı — bu issue o genişletilebilirliği şimdiden akılda tutmak için var).
  • Runtime temsili: sabit-noktalı (fixed-point) tamsayı + ölçek (scale) çifti (örn. "scaled integer" — 12345 ve ölçek 2123.45). Host heap'te basit bir struct olarak tutulabilir, özel kütüphane gerekmez (v0).
  • Literal Adaptasyon Kuralı (ADR-010) ile ilişki: decimal x = 1; geçerli olmalı (tamsayı → decimal kayıpsız); decimal x = 1.5; (float literal → decimal) hassasiyet tartışması gerektirir.

Açık Sorular

  • decimal aritmetiği (+, *) için taşma (overflow) kuralları ne olacak — hata mı, yoksa otomatik büyüme mi (bu, "host heap, özel allocator yok" ADR-015 ilkesiyle gerilim yaratabilir)?
  • Bu tip v0.1'in parçası mı, yoksa "batteries" (ADR-017) kapsamında ileride bir FFI/kütüphane çözümü mü?

İmza/Yorum: "Modern dillerin standart hale getirdiği ama derleyici çekirdeğine gömülmesi gereken" tiplerin ilk örneği — kullanıcı isteğiyle doğrudan örtüşüyor.

### Giriş (Nedir, Neden Önemli?) `float`/`double` ikili (binary) kayan-nokta sayılardır ve ondalık kesirleri (örn. `0.1`) tam temsil edemez — bu, para/finans hesaplamalarında hatalara yol açar. Birçok modern dil (C#, Python `Decimal`) bunun için ayrı bir **decimal (ondalık) tip** sunar. --- ### Gelişme (Olası Yaklaşımlar) - `decimal` yeni bir primitif `TypeKind` olarak `src/core/type.hpp`'ye eklenebilir (Faz 0'ın `Type` sınıfı genişletilebilir tasarlanmalı — bu issue o genişletilebilirliği şimdiden akılda tutmak için var). - Runtime temsili: sabit-noktalı (fixed-point) tamsayı + ölçek (scale) çifti (örn. "scaled integer" — `12345` ve ölçek `2` → `123.45`). Host heap'te basit bir struct olarak tutulabilir, özel kütüphane gerekmez (v0). - Literal Adaptasyon Kuralı (ADR-010) ile ilişki: `decimal x = 1;` geçerli olmalı (tamsayı → decimal kayıpsız); `decimal x = 1.5;` (float literal → decimal) hassasiyet tartışması gerektirir. --- ### Açık Sorular - `decimal` aritmetiği (`+`, `*`) için taşma (overflow) kuralları ne olacak — hata mı, yoksa otomatik büyüme mi (bu, "host heap, özel allocator yok" ADR-015 ilkesiyle gerilim yaratabilir)? - Bu tip v0.1'in parçası mı, yoksa "batteries" (ADR-017) kapsamında ileride bir FFI/kütüphane çözümü mü? *İmza/Yorum:* "Modern dillerin standart hale getirdiği ama derleyici çekirdeğine gömülmesi gereken" tiplerin ilk örneği — kullanıcı isteğiyle doğrudan örtüşüyor.
saqut added the
fikir
tip-sistemi
labels 2026-06-14 22:14:01 +03:00
Sign in to join this conversation.
No description provided.