Цитата:
Сообщение от Bargest
С какого в цифре 1 у него взялось две цифры?
|
Число 16 в 16-ричной системе счисленния будет как $10. В Precision записано 2, значит число состоит из двух цифр. В SignSpecialPlaces записано 1, значит одна из этих цифр используется для десятичной дроби. Получается, что число 1 было записано как "1,0". Вроде всё правильно, но действительно немного странно. В Delphi 7 такой странности нет - Precision=1 и SignSpecialPlaces=0, а в Delphi XE2 такая странность действительно наблюдается.
Впрочем модуль FMTBcd.pas известен своими ошибками. Например такое безобидное выражение:
Код:
ShowMessage( VarFMTBcdCreate(20) / VarFMTBcdCreate(6) );
в Delphi 7 вызывает исключение EBcdOverflowException. Какое же здесь может быть переполнение? А Delphi XE2 уже показывает правильный результат: "3,3333333333"