Подтвердить что ты не робот

В Delphi как определить, когда использовать Real, Real48, Double или Single типы данных?

Большинство моих приложений связаны с финансовыми расчетами, связанными с расчетами и расчетами процентных ставок. Я ищу, чтобы узнать, как определить, какой тип данных Delphi лучше всего использовать.

Если я использую базу данных для хранения этих значений, и я определил поля в этой базе данных как десятичное значение с двумя десятичными знаками, какой тип данных Delphi наиболее совместим с этим сценарием?

Должен ли я использовать формулу округления в Delphi для форматирования результатов до двух десятичных знаков перед сохранением значений в базе данных? Если да, то для чего это лучше всего?

4b9b3361

Ответ 1

Для таких вычислений не используйте типы с плавающей запятой, такие как Real, Single или Double. Они не хороши с десятичными значениями, такими как 0,01 или 1234,995, поскольку они должны их приближать.

Вы можете использовать валюту, тип фиксированной точки, но это все еще ограничено 4 знаками после запятой.

Попробуйте мой Decimal тип, который имеет 28-29 мест и имеет десятичный показатель, поэтому он идеально подходит для таких вычислений. Единственным недостатком является то, что он не поддерживается FPU (но написан на ассемблере, тем не менее), поэтому он не так быстро, как встроенные типы. Это то же самое, что и тип Decimal, используемый в .NET(но немного быстрее) и очень похож на тот, который используется на Mac.

Ответ 2

Если вы хотите выполнять финансовые расчеты, не используйте ни один из типов с плавающей точкой/реальным. Delphi имеет тип валюты, который является фиксированной точкой с 4 знаками после запятой, и это должно быть именно то, что вам нужно.