SORU
3 ŞUBAT 2012, Cuma


BcdDivide işlevi farklı Delphi XE ve XE2 davranması

FmtBcd.pas yoğun Delphi XE2 yeniden düzenlendi. Projelerimden birinde, Bcd iki değer bir bölme işlemi kullanan bir dava var, ama iki sürümleri farklı sonuçlar. En kötü durumda, Delphi XE2, Bcd overflow error atabilir.

Örnek: Delphi kod aşağıdaki XE2 uygulamalar konsol: Koşu

var A, B, C, D: TBcd;
begin
  A := StrToBcd('1');
  B := StrToBcd('3');
  BcdDivide(A, B, C);
  WriteLn(BcdToStr(C));

  try
    BcdMultiply(C, C, D);
    WriteLn(BcdToStr(D));
  except
    on E: Exception do
      WriteLn(E.Message);
  end;

  ReadLn;
end.

Yukarıda çıkış olacaktır:

0.333333333333333333333333333333333333333333333333333333333333333
BCD overflow

8* *değişken özgüllük c ondalık basamaklı Bcd Değerini içerir. Değişken BcdMultiply ikinci bir işlem yapmadan C Bcd overflow error a neden olur.

Ancak, Delphi TEKNOLOJİ aynı kodu çalıştırmak için herhangi bir özel durum istemi olmadan aşağıdaki sonucu verir:

0.3333333333
0.11111111108888888889

Herkes bu sorunu çözmek için en iyi uygulama yöntemi önerir misiniz?

CEVAP
26 Kasım 2012, PAZARTESİ


Soru kodu XE2 beklenen güncelleme 4 çıkış üretir. Güncelleme 3 kötü çıktı üretir ve bu şekilde düzeltme update 4 ile geldi unutmayın. Ayrıca, XE3 beklenen çıktıyı üretir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • FPSRussia

    FPSRussia

    19 NİSAN 2010
  • How To Cook That

    How To Cook

    16 NİSAN 2011