楼主: fanzai1hao
1099 9

简单程序疑问,悬赏十个论坛币! [推广有奖]

  • 0关注
  • 38粉丝

已卖:3544份资源

讲师

61%

还不是VIP/贵宾

-

威望
0
论坛币
7228 个
通用积分
19.8725
学术水平
17 点
热心指数
38 点
信用等级
15 点
经验
33245 点
帖子
189
精华
0
在线时间
676 小时
注册时间
2010-5-14
最后登录
2024-8-20

楼主
fanzai1hao 学生认证  发表于 2015-4-2 23:55:01 |AI写论文
10论坛币
QQ截图20140402234727.jpg 首先是有股票2302118 个关于前收盘价,今收盘价和涨跌的数据。
目的在于找出今收盘价减去前收盘价不等于涨跌的股票数据(即找出除息除权的股票)


我写的程序为:


data new;                                                                                                                              
set stock;                                                                                                                              
if CHG^=TCLOSE-LCLOSE then output new;                                                                                                   
run;   

运行后结果为
NOTE: 从数据集 WORK.STOCK. 读取了 2302118 个观测
NOTE: 数据集 WORK.NEW 有 2192439 个观测和 5 个变量。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间          1.01 秒
      CPU 时间          0.95 秒

QQ截图20140402235300.jpg

明显可以看出表中今收盘价减前收盘价是等于涨跌的,并没有得到想要的结果,请大神们赐教~~~~~









最佳答案

jl60156 查看完整内容

it is due to precision. data new; set stock; if abs(CHG-(TCLOSE-LCLOSE)) gt 0.0000001 then output new; ...
关键词:论坛币 output Stock Close outpu 程序

沙发
jl60156 发表于 2015-4-2 23:55:02
it is due to precision.

data new;                                                                                                                              
set stock;                                                                                                                              
if abs(CHG-(TCLOSE-LCLOSE)) gt 0.0000001 then output new;                                                                                                   
run;  

藤椅
fanzai1hao 学生认证  发表于 2015-4-3 07:49:39 来自手机
jl60156 发表于 2015-4-3 01:19
it is due to precision.

data new;                                                                 ...
不大懂,tclose和lclose都只有两位小数,相减也只有两位小数,怎么会和精度有关呢,求详解~~~

板凳
fanzai1hao 学生认证  发表于 2015-4-4 10:18:31
jl60156 发表于 2015-4-3 01:19
it is due to precision.

data new;                                                                 ...
大神你在不在啊,求指导啊~~~~~~

报纸
teqel 发表于 2015-4-5 00:27:03 来自手机
fanzai1hao 发表于 2015-4-3 07:49
不大懂,tclose和lclose都只有两位小数,相减也只有两位小数,怎么会和精度有关呢,求详解~~~
你以为只有两位精度,但其实里面是个高精度的(8字节)浮点数。可以自己减一下二者,看看结果是不是等于0

地板
fanzai1hao 学生认证  发表于 2015-4-5 00:36:00
teqel 发表于 2015-4-5 00:27
你以为只有两位精度,但其实里面是个高精度的(8字节)浮点数。可以自己减一下二者,看看结果是不是等于0
还真不等于0,可问题出在哪儿呢?数据的原始输入问题?还是sas系统自己运算的问题?那岂不用sas等特别小心,每次要用abs函数或round函数来处理?

7
teqel 发表于 2015-4-6 01:56:36
fanzai1hao 发表于 2015-4-5 00:36
还真不等于0,可问题出在哪儿呢?数据的原始输入问题?还是sas系统自己运算的问题?那岂不用sas等特别小心 ...
浮点数精度问题,是数值计算的一个基本问题,和SAS无关,可以自己搜索一下

8
jl60156 发表于 2015-4-6 08:49:56
fanzai1hao 发表于 2015-4-3 07:49
不大懂,tclose和lclose都只有两位小数,相减也只有两位小数,怎么会和精度有关呢,求详解~~~
take a look at the following reference


http://support.sas.com/documentation/cdl/en/lrcon/62955/HTML/default/viewer.htm#a000695157.htm

9
fanzai1hao 学生认证  发表于 2015-4-6 11:18:43
teqel 发表于 2015-4-6 01:56
浮点数精度问题,是数值计算的一个基本问题,和SAS无关,可以自己搜索一下
好的,谢谢大神指导~

10
fanzai1hao 学生认证  发表于 2015-4-6 11:19:25
jl60156 发表于 2015-4-6 08:49
take a look at the following reference
太赞了,十分感谢~~~~

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-12 11:36