我有一个TDATETIME变量,该变量在40510.416667的运行时分配了值。当我使用FRAC函数将时间提取到TTIME类型变量时,它将其设置为0.41666666666。为什么它更改了值的精度,并且是否有一个工作组来保留原始值的精度。将其设置为0.416667。

有帮助吗?

解决方案

丧失精度的原因之一是TDATETIME是双重的,而FRAC的参数和返回值是扩展的类型。

将浮点从一种类型转换为另一种类型时, 一些 精度可能会丢失。 (对它们进行算术时也是如此)。

为了正确比较浮点数值,您应该使用单位数学的xarkareValue函数。

其他提示

TDATETIME是一个浮点数。某些数字不能完全表示为浮点数。 0.416667 / 0.41666666666似乎是另一个。

您可以将其四舍五入到5或6位以便显示。这使您的准确性达到了1秒钟左右。

每个计算机科学家对浮点数的了解 应该有帮助, 浮点的精度 - 这将为您提供一些详细的信息,以与Jeff的答案一起使用。

感谢您对此的所有帮助,非常感谢。为了绕过我的problen,由于精确度的变化而引起的problen,我使用了比较时间函数,而不是> =或<= operators比较时间。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top