以下是引用月沐庭轩在2012-12-9 08:51:27的发言:
你的代码,没有了空格,可是不用你的代码,宽度也不是10。
通过我的测试,如果结果是一位数,前面有两个空格,结果是其他位数,包括十位以上,也是前面有一个空格。
十位数以上的计算结果,后面有默认小数位数2位。
显示整数还是小数的差异不完全在于位数,而是在于精度。你试试“?2147483646+1”命令,看看是什么情况;再试一下“?2147483646+2”命令,看看又是什么情况。这两个结果整数部分都是10位数,为什么前者显示整数,后者显示带小数呢?这是因为在FoxPro中进行整数计算时,在整个计算过程中,
任何一个步骤的结果都在整数型可用的范围内,那么最后的结果就显示整数;反之,只要其中有一个步骤的结果超出了整数型的可用范围(含中间步骤),那么最后的结果就显示为浮点型的。可以做一个实验:在命令窗口中分别键入“?2147483646+2-1”和“?2147483646-1+2”命令,比较一下返回的结果。在FoxPro中,整型数值固定以4个字节存储。其中,最高位第32位存储正负号:0为正,1为负;其余31位存储数值内容。所以,它可用的范围在[-2147483647, 2147483647]区间内,运算中任何一个步骤的结果超过这个范围,就被自动转换成范围更大的浮点型,所以最后的结果显示会带小数位。
最后,说说显示结果前面的空格问题。我没有完全研究清楚,因为比较复杂。我只知道:1)+、-、* 的计算结果前面都可能会出现空格;2)以整数显示时,1位:空两格;2-9位:空一格;10位:1000000000-1999999998区间,不空格;1999999999-2147483647区间,空一格;3)负数也遵循这个规律;4)浮点数在我们平时用得到的范围内,前面都只空一格。有兴趣的朋友可以试试更大范围的浮点数。
[
本帖最后由 taifu945 于 2012-12-9 12:33 编辑 ]