数字转化为字符串[str],再还原回来[val], 会损失精度。怎样避免?

孩皮妞野 2003-12-28 06:07:19
如:

a = 1234.56789

b = str(a)

c = val(b)

?a
?c
...全文
60 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
孩皮妞野 2003-12-30
  • 打赏
  • 举报
回复
谢谢 xiolig(凌霄)。
xiolig 2003-12-29
  • 打赏
  • 举报
回复
SORRY,进一步的测试表明,DECIMALS设置影响的仍然仅仅是显示结果。
验证方法:
b = "1234.56789"
SET DECIMALS TO
c2 = VAL(b)
SET DECIMALS TO 5
c5 = VAL(b)
SET FIXED OFF
?c2,c5,c2=c5
SET FIXED ON
?c2,c5,c2=c5

xiolig 2003-12-29
  • 打赏
  • 举报
回复
谢谢楼主,原来VAL函数居然要受DECIMALS设置的影响:
a = 1234.56789
b = TRANSFORM(a) &&比STR更方便
SET DECIMALS TO 5
c = VAL(b)
?c
孩皮妞野 2003-12-29
  • 打赏
  • 举报
回复
另外: foxpro在调用过程时如何向其传递参数?过程中怎样使用这个参数?
孩皮妞野 2003-12-29
  • 打赏
  • 举报
回复
Jaxi_sky(sky), 不行。 你说的是set deci to 吗? set deci to 也不行。
Jaxi_sky 2003-12-29
  • 打赏
  • 举报
回复
可以设置小数点的位数
用set numeric to 5来进行,就可以了
孩皮妞野 2003-12-28
  • 打赏
  • 举报
回复
cxmcxm, 谢谢你的回复!

a->b没有损失精度。可以用
?b
来查看和验证。说白了就是val在把字符串转化为数字时会自动四舍五入。

问题是
1. 是否可以关闭自动四舍五入的默认行为?
2. 或者是否有别的不进行舍入的转换函数?
cxmcxm 2003-12-28
  • 打赏
  • 举报
回复
b=str(a,10,5)
c=val(b)

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧