Как в Delphi определить, когда использовать типы данных Real, Real48, Double или Single? - PullRequest
12 голосов
/ 10 сентября 2011

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

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

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

Ответы [ 2 ]

10 голосов
/ 11 сентября 2011

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

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

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

10 голосов
/ 10 сентября 2011

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

...