楼主: cinaiyimu
2068 5

[问答] SAS 判断大小结果有误,是什么原因 [推广有奖]

  • 4关注
  • 0粉丝

硕士生

25%

还不是VIP/贵宾

-

威望
0
论坛币
881 个
通用积分
29.0613
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
1430 点
帖子
69
精华
0
在线时间
183 小时
注册时间
2016-6-8
最后登录
2023-5-23

5论坛币
如图所示,判断计算后的数据i30g30_chg_(显示0.935)是否小于0.935,应该不小于,但是SAS 判断是小于0.935,新输入的数字0.935可以判断准确,这个值就总是判断错。用put函数,这个值确实为0.935000,为什么SAS 会判断错呢?

截图.png (27.79 KB)

截图.png

最佳答案

whymath 查看完整内容

可能是浮点型错误。 试用 put(i30g30_chg_,24.12) 查看变量的精确值
关键词:是什么原因 put函数 如图所示 显示0 put

回帖推荐

whymath 发表于2楼  查看完整内容

可能是浮点型错误。 试用 put(i30g30_chg_,24.12) 查看变量的精确值
沙发
whymath 发表于 2022-5-7 19:04:38 |只看作者 |坛友微信交流群
可能是浮点型错误。
试用 put(i30g30_chg_,24.12) 查看变量的精确值

使用道具

藤椅
cinaiyimu 发表于 2022-5-11 11:59:17 |只看作者 |坛友微信交流群
whymath 发表于 2022-5-8 11:27
可能是浮点型错误。
试用 put(i30g30_chg_,24.12) 查看变量的精确值
用put函数后发现原始数据(3位小数点)相减后出现小数点变为15位的情况,有的数值相减没有变,有的变了。如何避免此问题呢?非常感谢!

使用道具

板凳
whymath 发表于 2022-5-11 18:10:53 |只看作者 |坛友微信交流群
cinaiyimu 发表于 2022-5-11 11:59
用put函数后发现原始数据(3位小数点)相减后出现小数点变为15位的情况,有的数值相减没有变,有的变了。 ...
关于浮点数错误的成因和解决办法网上有很多资料,一搜便知。
一种简单的解决办法是将要比较的两个数作差,然后将差值舍入到一个设定的阈值,即可得到满意的结果。本例中,可用:
if round(i30g30_chg_ - 0.935, 0.000001) = 0 then x = 1;
else x = 0;
来完成比较。

使用道具

报纸
cinaiyimu 发表于 2022-5-12 14:45:43 |只看作者 |坛友微信交流群
whymath 发表于 2022-5-11 18:10
关于浮点数错误的成因和解决办法网上有很多资料,一搜便知。
一种简单的解决办法是将要比较的两个数作差 ...
好的,非常感谢!

使用道具

地板
yutian77 发表于 2022-5-12 19:54:46 |只看作者 |坛友微信交流群
学习了!!!!

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 06:18