主题:[讨论]请教一个问题
小野芒草
[专家分:670] 发布于 2010-01-01 12:00:00
我经常在转换表格数据时碰到一个意外的情况:
字符型字段名item,当item是一个数字加英文字母e或E时,val(item)的值会是一个离奇大的数字
譬如,item='123e'时,val(item)不是123,而是一个非常大的数字(不过记不太清了,也可能是非常小的数字)。因为有时出现这种情况,有时正常,记不太清了。
“E”跟在数字后面是不是会有什么特别的含意呢?本人数学不好,但估计要么是一个VFP的bug,更可能是那个地方譬如设置上的问题吧。请高手指点一下,谢谢!
回复列表 (共7个回复)
沙发
wzxc [专家分:9440] 发布于 2010-01-01 16:08:00
请百度一下“科学计数法”
字母“E”确实有含义。代表科学计数法,后面的数字是指数。
1.23E+10=12300000000
1.23E-10=0.000000000123
item='123E'
?val(item)
结果是123.00
板凳
小野芒草 [专家分:670] 发布于 2010-01-01 23:30:00
谢谢楼上,原因搞清楚了
有什么办法在用函数val()转换时不出现这种情况呢?
我觉得val()函数忽视了这一点,也算个缺陷吧
3 楼
cbl518 [专家分:57140] 发布于 2010-01-02 07:48:00
我觉得val()函数忽视了这一点,也算个缺陷吧
从未出现过这种情况啊!
我测试一下:
item='123E'
?val(item)
结果是123.00
4 楼
小野芒草 [专家分:670] 发布于 2010-01-05 00:24:00
[quote]
从未出现过这种情况啊!
我测试一下:
item='123E'
?val(item)
结果是123.00
[/quote]
--------------------------
e后有破折号+数字时才会出现这种情况,如:
val('123e-88') 不等于123,而是=1.23e-86
破折号后数字不同,转换后的也都是不同的意外数值
5 楼
北京惬意 [专家分:1330] 发布于 2010-01-05 08:49:00
[quote]
我觉得val()函数忽视了这一点,也算个缺陷吧[/quote]
我觉得这不但不是VFP的缺陷,而是VFP的高明。
切菜时用菜刀切了手,抱怨菜刀生产厂有些不公平吧?哈哈!
6 楼
小野芒草 [专家分:670] 发布于 2010-01-05 14:59:00
[quote][quote]
我觉得val()函数忽视了这一点,也算个缺陷吧[/quote]
我觉得这不但不是VFP的缺陷,而是VFP的高明。
切菜时用菜刀切了手,抱怨菜刀生产厂有些不公平吧?哈哈!
[/quote]
请慢一点“哈哈”,说明一下高明在何处
切菜时刀把断了,砸了自己的脚,还夸菜刀生产厂高明。呵呵
7 楼
北京惬意 [专家分:1330] 发布于 2010-01-05 18:05:00
[quote][quote][quote]
我觉得val()函数忽视了这一点,也算个缺陷吧[/quote]
我觉得这不但不是VFP的缺陷,而是VFP的高明。
切菜时用菜刀切了手,抱怨菜刀生产厂有些不公平吧?哈哈!
[/quote]
请慢一点“哈哈”,说明一下高明在何处
切菜时刀把断了,砸了自己的脚,还夸菜刀生产厂高明。呵呵[/quote]
不论是菜刀切了手、砸了脚,就是再跳起来砍了屁股,抱怨菜刀生产厂都不公平。哈哈!
我来回复