Foxpro 不会在算术溢出时抛出错误

Foxpro not throwing error on arithmetic overflow

大家好 将 FoxPro table 转换为 MSSQL 时出现问题。

发生的事情是,在 FoxPro table 字段中输入了一个超出预期值的数字。 (在 10,2 数字字段中输入了一个大整数)但是尽管如此,FoxPro 仍然允许保存数据并显示在报告中。 但是,当尝试将所述数据转换为 MSSQL 时,它会导致错误并且无法获取所述值。

我知道保存号码时发生了错误,但我的问题是为什么 FoxPro 允许此错误通过甚至在该号码为 "wrong"

时显示

这是可能的,因为所有语言都有其特点,而这只是 Visual FoxPro 的一种。您假设它的行为方式与强类型编译语言(如 C)相同。这种行为可能可以追溯到 dBase 时代,并且为了兼容性而保留。

如果您尝试将值插入超出尺寸的数字字段,则规则为:

  • 截断小数位并四舍五入字段的剩余小数部分。
  • 如果该值不适合,则使用科学计数法存储字段内容。
  • 如果值仍然不合适,用星号替换字段内容。