标题:vfp的困惑之三 SET DECIMALS 命令 指定小数位数不准?
只看楼主
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
结帖率:88.24%
已结贴  问题点数:20 回复次数:5 
vfp的困惑之三 SET DECIMALS 命令 指定小数位数不准?
SET DECIMALS Command
Specifies the number of decimal places displayed in numeric expressions.
SET DECIMALS TO [nDecimalPlaces]
Parameters
nDecimalPlaces
Specifies the minimum number of decimal places to display. The default is two decimal places. The maximum number of decimal places is 18; the minimum is zero.

SET DECIMALS 命令
指定数值表达式中的小数位数。
SET DECIMALS TO [nDecimalPlaces]
参数
nDecimalPlaces
指定要显示的小数位的最少数目。默认为 2 位小数。小数位最多数目为 18;最少为 0。
执行如下代码:
Clear
? "定义的小数位数","          计算结果"
For i=0 To 18
    Set Decimals To i
    a= 1
    b= 3
    ? i,a/b, 1/3
Endfor

a/b, 和1/3(变量与具体数值)的运算结果不一致,并且后几个的位数居然用0补齐位数。说好的最大的18位呢?
搜索更多相关主题的帖子: default display minimum number 表达式 
2017-04-04 20:37
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
SET FIXED ON
For i=0 To 18
    Set Decimals To i
    a= 1
    b= 3
    ? i,a/b, 1/3
2017-04-04 21:40
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:20 
16位精度
2017-04-04 21:46
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
看看这个:
SET FIXED ON
SET DECIMALS TO 18
?2/10+9
?2/10-9

计算器的结果:
9.2
-8.8
看来VFP的浮点运算是用类似牛顿迭代法计算。

[此贴子已经被作者于2017-4-4 22:00编辑过]

2017-04-04 21:56
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
最大的16位
2017-04-05 07:25
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
得分:0 
    Set Decimals To 可定位到18 位小数,可VFP的计算能力只到16位,然后拿0补齐。看来“童话里都是骗人的!”

认真看书学习,弄通Fox主义。
2017-04-23 12:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-475784-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.105540 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved