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
  ISNULL değeri kontrol etmek OZCANK 7 2.615 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 3.416 04-04-2020, Saat: 19:56
Son Yorum: Ahmet İPEKÇİ
  Hex bir değeri, 37 bit integer değere çevirme Adem Kurt 5 2.548 14-01-2020, Saat: 09:30
Son Yorum: adelphiforumz
  Veri tabanına aynı değeri tekrarlama arsl01 21 9.190 03-05-2019, Saat: 11:34
Son Yorum: edo
  Veritabanına aynı değeri yazıyorsak boşuna güncellemeyelim. ssahinoglu 4 2.376 26-12-2018, Saat: 16:14
Son Yorum: narkotik



Konuyu Okuyanlar: 1 Ziyaretçi