Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Extended Değeri Tam Bölme
#1
Merhaba,

Çok ilginç ve içinden çıkılmaz bir şey ile karşılaştım.

var
 flFiyat: Extended;
begin
 flFiyat := 600/1.18;


yaptığımda "508,474576271186" sonucunu alıyorum. Geri 600*1.18 yaptığımda "599,9999999999995" sonucunu alıyorum.

Aslında bölme işleminde 13 haneli bir sonuç vermeliydi. Yani "508,4745762711864" olmalıydı.

flFiyat verisini başka bir sistem geri 1.18 ile çarptığı ve sonucu hassas bir şekilde işlediği için maalesef tam değeri göndermem gerekiyor.

Daha önce böyle bir şey deneyimleyen var mı? Extended veriler ile ilgili derinlemesine bir çok yazı buldum fakat Delphide neden 12 hane ile kısıtlı olduğunu anlayamadım.
Cevapla
#2
(10-09-2021, Saat: 01:19)berk06 Adlı Kullanıcıdan Alıntı: Merhaba,

Çok ilginç ve içinden çıkılmaz bir şey ile karşılaştım.

var
 flFiyat: Extended;
begin
 flFiyat := 600/1.18;


yaptığımda "508,474576271186" sonucunu alıyorum. Geri 600*1.18 yaptığımda "599,9999999999995" sonucunu alıyorum.

Aslında bölme işleminde 13 haneli bir sonuç vermeliydi. Yani "508,4745762711864" olmalıydı.

flFiyat verisini başka bir sistem geri 1.18 ile çarptığı ve sonucu hassas bir şekilde işlediği için maalesef tam değeri göndermem gerekiyor.

Daha önce böyle bir şey deneyimleyen var mı? Extended veriler ile ilgili derinlemesine bir çok yazı buldum fakat Delphide neden 12 hane ile kısıtlı olduğunu anlayamadım.


ben şimdi bunu 1000 basamakla delphide böldürdüm,

600/1,18 = 

508,4745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118

şeklinde sonsuza kadar gidiyor esasında.
Cevapla
#3
(10-09-2021, Saat: 01:45)vedat35 Adlı Kullanıcıdan Alıntı:
(10-09-2021, Saat: 01:19)berk06 Adlı Kullanıcıdan Alıntı: Merhaba,

Çok ilginç ve içinden çıkılmaz bir şey ile karşılaştım.

var
 flFiyat: Extended;
begin
 flFiyat := 600/1.18;


yaptığımda "508,474576271186" sonucunu alıyorum. Geri 600*1.18 yaptığımda "599,9999999999995" sonucunu alıyorum.

Aslında bölme işleminde 13 haneli bir sonuç vermeliydi. Yani "508,4745762711864" olmalıydı.

flFiyat verisini başka bir sistem geri 1.18 ile çarptığı ve sonucu hassas bir şekilde işlediği için maalesef tam değeri göndermem gerekiyor.

Daha önce böyle bir şey deneyimleyen var mı? Extended veriler ile ilgili derinlemesine bir çok yazı buldum fakat Delphide neden 12 hane ile kısıtlı olduğunu anlayamadım.


ben şimdi bunu 1000 basamakla delphide böldürdüm,

600/1,18 = 

508,4745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118

şeklinde sonsuza kadar gidiyor esasında.

Teşekkür ederim, bir çıkış yolu verdiniz.
formatfloat('0.#############', 600/1.18)

şeklinde 13 basamak şeklinde alabildim Smile
Cevapla
#4
(10-09-2021, Saat: 01:45)vedat35 Adlı Kullanıcıdan Alıntı:
(10-09-2021, Saat: 01:19)berk06 Adlı Kullanıcıdan Alıntı: Merhaba,

Çok ilginç ve içinden çıkılmaz bir şey ile karşılaştım.

var
 flFiyat: Extended;
begin
 flFiyat := 600/1.18;


yaptığımda "508,474576271186" sonucunu alıyorum. Geri 600*1.18 yaptığımda "599,9999999999995" sonucunu alıyorum.

Aslında bölme işleminde 13 haneli bir sonuç vermeliydi. Yani "508,4745762711864" olmalıydı.

flFiyat verisini başka bir sistem geri 1.18 ile çarptığı ve sonucu hassas bir şekilde işlediği için maalesef tam değeri göndermem gerekiyor.

Daha önce böyle bir şey deneyimleyen var mı? Extended veriler ile ilgili derinlemesine bir çok yazı buldum fakat Delphide neden 12 hane ile kısıtlı olduğunu anlayamadım.


ben şimdi bunu 1000 basamakla delphide böldürdüm,

600/1,18 = 

508,4745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118644067796610169491525423728813559322033898305084745762711864406779661016949152542372881355932203389830508474576271186440677966101694915254237288135593220338983050847457627118

şeklinde sonsuza kadar gidiyor esasında
Bu sonucu nasıl aldınız ? FormatFloat() ile olmuyor..
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  kayıtta para değeri hatası. ercanskose 2 479 26-07-2023, Saat: 10:46
Son Yorum: delphiman
Question Radio Buton value yada checked değeri erdem55 7 1.493 31-01-2023, Saat: 18:50
Son Yorum: erdem55
  ISNULL değeri kontrol etmek OZCANK 7 4.104 25-05-2020, Saat: 20:41
Son Yorum: ihalilcoban
  Chromium (CEF4) ile sayfa kaynağını veya javascript çalıştırıp dönen değeri nasıl? adeministrator 8 5.061 04-04-2020, Saat: 19:56
Son Yorum: Ahmet İPEKÇİ
  Hex bir değeri, 37 bit integer değere çevirme Adem Kurt 5 3.807 14-01-2020, Saat: 09:30
Son Yorum: adelphiforumz



Konuyu Okuyanlar: 1 Ziyaretçi