Delphi中使用四舍五入(双精度)的浮点操作无效

Delphi中使用四舍五入(双精度)的浮点操作无效,delphi,rounding,Delphi,Rounding,我使用的是Delphi7,其中变量v:double设置为值55889002873e+22 货币小数是2 使用roundv时,会出现以下错误: 无效的浮点操作 我不清楚为什么会这样,因为double的范围是指数-308到+308。如何执行舍入以确保正确?舍入的结果是整数变量 但是Int64类型包含的值不能超过2^63-1,大约为9*10^18,因此 如果X的舍入值不在Int64范围内,则会生成运行时错误 这种舍入的目的是什么 四舍五入的结果是整数变量 但是Int64类型包含的值不能超过2^63-1

我使用的是Delphi7,其中变量v:double设置为值55889002873e+22

货币小数是2

使用roundv时,会出现以下错误:

无效的浮点操作

我不清楚为什么会这样,因为double的范围是指数-308到+308。如何执行舍入以确保正确?

舍入的结果是整数变量

但是Int64类型包含的值不能超过2^63-1,大约为9*10^18,因此

如果X的舍入值不在Int64范围内,则会生成运行时错误

这种舍入的目的是什么

四舍五入的结果是整数变量

但是Int64类型包含的值不能超过2^63-1,大约为9*10^18,因此

如果X的舍入值不在Int64范围内,则会生成运行时错误


这种舍入的目的是什么

多谢各位。我将添加条件来修复它。您的意思是圆形而不是随机。谢谢。我将添加条件来修复它。您的意思是舍入而不是随机。根据您的任务,您可以使用int获取整数部分而不出错,因为它返回浮点结果。根据您的任务,您可以使用int获取整数部分而不出错,因为它返回浮点结果。
function Round(X: Real): Int64;