Недопустимая операция с плавающей точкой с использованием округления (двойного) в Delphi - PullRequest
0 голосов
/ 09 декабря 2018

Я использую Delphi 7, где у меня есть переменная v: double, для которой установлено значение 5,5889002873e + 22.

CurrencyDecimals равен 2

Когда я использую round (v),Я получаю эту ошибку:

Недопустимая операция с плавающей запятой

Мне не понятно, почему это происходит, потому что диапазон double равен экспоненте от -308 до +308.Как правильно выполнить округление?

1 Ответ

0 голосов
/ 09 декабря 2018

Результат Round - целочисленная переменная ( help )

function Round(X: Real): Int64;

, но тип Int64 не может содержать значения больше 2^63 - 1 (около 9*10^18), поэтому

Если округленное значение X не находится в пределах диапазона Int64, генерируется ошибка времени выполнения

Какова цель этого округления?

...