全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2717 5
2022-05-07
悬赏 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) 查看变量的精确值
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-5-7 19:04:38
可能是浮点型错误。
试用 put(i30g30_chg_,24.12) 查看变量的精确值
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

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

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

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;
来完成比较。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-12 14:45:43
whymath 发表于 2022-5-11 18:10
关于浮点数错误的成因和解决办法网上有很多资料,一搜便知。
一种简单的解决办法是将要比较的两个数作差 ...
好的,非常感谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-5-12 19:54:46
学习了!!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群