搜索
人大经济论坛 附件下载

附件下载

所在主题:
文件名:  one.zip
资料下载链接地址: https://bbs.pinggu.org/a-1530531.html
本附件包括:
  • one.sas7bdat
附件大小:
前时曾在本论坛看到过一篇帖子,说是proc format得到的数据集,所看到的值和实值有异
https://bbs.pinggu.org/thread-1547655-1-1.html

合并此主题,我想要向老师们询问两个问题,我相信用SAS有一段时间的朋友多有曾遇到。

1. 就是对一个“看似”是整数的值做int,再让他和原值相减,得到的是一个非常趋于零的数。
数据集请见附件。
Code就是:int = int(value); remain = value - int;

个人的感觉(猜测)是:SAS储存的值和他展现的值有一定的差异,这个差异在output中不会展现,在一般的proc运算中不会影响,但是只要做一个精确的取余,就可以看到他的原型。

Dataset:
valueint
remain
-1.1-1
-0.1
1 1 4.440892E-16

我的同事告诉我一个办法,就是用best.对这个值洗一下:value = input(put(value, best.), best.);
但是这是治疗之法,而不是预防之法。

所以我想请问,可否告知这种现象的实际原理,是否有一种更直接的方法(例如某个option)能避免这种现象?

2. 还有一个疑问与第一个类似,只是很抱歉我没有收集到这个实例数据集。

就是在对一个值用proc means或其他运算步得到值过后,有时put得到的结果有误。

例如一个值:mean = 5.1251;

有时会发生:value1 = put(mean, 4.2) = 5.12

但是加了round就不会出错了: value2 = put(round(mean, 0.01), best.) = 5.13

所以我想问下,put有时没有round精确,是什么原因呢?除了加round校正,有无其他办法呢?

第2问的实例我会稍后收集跟上,谢谢。




    熟悉论坛请点击新手指南
下载说明
1、论坛支持迅雷和网际快车等p2p多线程软件下载,请在上面选择下载通道单击右健下载即可。
2、论坛会定期自动批量更新下载地址,所以请不要浪费时间盗链论坛资源,盗链地址会很快失效。
3、本站为非盈利性质的学术交流网站,鼓励和保护原创作品,拒绝未经版权人许可的上传行为。本站如接到版权人发出的合格侵权通知,将积极的采取必要措施;同时,本站也将在技术手段和能力范围内,履行版权保护的注意义务。
(如有侵权,欢迎举报)
二维码

扫码加我 拉你入群

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

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

GMT+8, 2025-12-24 22:30