楼主: cinaiyimu
2790 5

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

  • 4关注
  • 0粉丝

已卖:2份资源

硕士生

25%

还不是VIP/贵宾

-

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

楼主
cinaiyimu 发表于 2022-5-7 19:04:37 |AI写论文
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
拉您进交流群
GMT+8, 2025-12-29 11:14