楼主: baiduqiqi
8258 8

[问答] 默认字节数数值型和字符型区别在哪里? [推广有奖]

  • 15关注
  • 3粉丝

博士生

23%

还不是VIP/贵宾

-

威望
0
论坛币
304 个
通用积分
0
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
4568 点
帖子
199
精华
0
在线时间
162 小时
注册时间
2012-3-17
最后登录
2024-2-22

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
data ss;
input animal1 $ animal2 $
mlgrams1 mlgrams2;
cards;
hummingbird ostrich 54000.39 90800000.87
;
run;
答案为b. animal1 animal2 mlgrams1 mlgrams2
hummingb ostrich 54000.39 90800000.87
这里为什么数值型变量没有被truncate?

二维码

扫码加我 拉你入群

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

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

关键词:数值型 字符型 Animal Input cards

回帖推荐

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

我倒想问你,为什么会truncate?

hcydlee 发表于5楼  查看完整内容

记得评分啊

本帖被以下文库推荐

沙发
webgu 发表于 2012-8-17 22:30:39 |只看作者 |坛友微信交流群
我倒想问你,为什么会truncate?
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
baiduqiqi + 1 + 1 + 1 分析的有道理

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

藤椅
hcydlee 发表于 2012-8-17 22:53:43 |只看作者 |坛友微信交流群
字符型8个字符$8.
数值型best12.
你把最后那个数字再加几位,加小数点超过12位就会round。
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
baiduqiqi + 1 + 1 + 1 我很赞同

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

80 字节以内
不支持自定义 Discuz! 代码

使用道具

板凳
baiduqiqi 在职认证  发表于 2012-8-17 23:07:45 |只看作者 |坛友微信交流群
hcydlee 发表于 2012-8-17 22:53
字符型8个字符$8.
数值型best12.
你把最后那个数字再加几位,加小数点超过12位就会round。
谢谢

使用道具

报纸
hcydlee 发表于 2012-8-17 23:21:23 |只看作者 |坛友微信交流群
记得评分啊
80 字节以内
不支持自定义 Discuz! 代码

使用道具

地板
webgu 发表于 2012-8-18 18:03:13 |只看作者 |坛友微信交流群
SAS存储数值变量时默认以8字节,64位存储。至于小数位数,涉及到SAS的浮点型存储机制的精度问题了。那似乎是一个很麻烦的问题。
至于多少位有效小数,我好像也不太确定。12位应该值得商榷?

499  data a;
500   a=1.12345678901234567890;
501   put  '*'a 32.30'*';
           ---
           49
NOTE 49-169: The meaning of an identifier after a quoted string may change in a future SAS release.  Inserting white space
             between a quoted string and the succeeding identifier is recommended.

502   run;

*1.123456789012340000000000000000*
NOTE: The data set WORK.A has 1 observations and 1 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
baiduqiqi + 1 + 1 + 1 我很赞同

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

7
lynette_89 发表于 2012-8-18 23:20:34 |只看作者 |坛友微信交流群
什么意思啊 没看懂

使用道具

8
hcydlee 发表于 2012-8-18 23:39:28 |只看作者 |坛友微信交流群
webgu 发表于 2012-8-18 18:03
SAS存储数值变量时默认以8字节,64位存储。至于小数位数,涉及到SAS的浮点型存储机制的精度问题了。那似乎是 ...
这个还与系统有关,不同的系统在处理64位中的起始8位的方法是不一样的,造成精度和能够表示的范围有所区别。
我之前看相关文档就发现浮点数据是按照科学计数法存储的。起始8位存储了指数位和符号。IBM标准中,起始8位的第一位是符号,后七位是以64为起点存储指数位的。比如0.01他的指数位是-1,后七位就是63,就是0111111。 至于后面7个字节存储的就是0.1,实际上很多数据都用不了8个字节,所以也有些语言会有单精度也就是用4个字节表示浮点数据的。
80 字节以内
不支持自定义 Discuz! 代码

使用道具

9
webgu 发表于 2012-8-19 09:22:39 |只看作者 |坛友微信交流群
hcydlee 发表于 2012-8-18 23:39
这个还与系统有关,不同的系统在处理64位中的起始8位的方法是不一样的,造成精度和能够表示的范围有所区别 ...
是的。 在pc机上,符号,指数,尾数的bit分配是1,11,52. 如下:
SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM

如8192.

1    data _null_;
2     a=8192;
3     put a binary64.;
4     run;

0100000011000000000000000000000000000000000000000000000000000000
NOTE: DATA statement used (Total process time):
      real time           2.26 seconds
      cpu time            0.01 seconds
具体可参考
http://www.lexjansen.com/search/ ... p;ref=&ss=0j0j1
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

使用道具

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

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

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

GMT+8, 2024-4-30 16:54