SAS中文论坛

标题: 四舍五入问题 [打印本页]

作者: shiyiming    时间: 2011-11-13 11:57
标题: 四舍五入问题
某一字段变量下有一串数值型数值,如何根据每一个观测值的第一个非零数字进行四舍五入,如:
var
0.050100
0.043200
0.003000
0.005300
0.000007
需要把上边var样例数据四舍五入转换成如下:
want
0.100000
0.001000
0.000100
0.010000
0.000010
数据很多,就简单列了些,真实数据小数位很多,望各位指教下(小数位12位以内都行)...
作者: shiyiming    时间: 2011-11-13 16:26
标题: Re: 四舍五入问题
[code:3im292u6]data raw;
    input var;
    want=ifn(var>=5*10**floor(log10(var)),10**ceil(log10(var)),0.1*10**floor(log10(var)));
    format var want 8.6;
datalines;
0.050100
0.043200
0.003000
0.005300
0.000007
;[/code:3im292u6]
作者: shiyiming    时间: 2011-11-14 12:40
标题: Re: 四舍五入问题
[quote="hopewell":33y7tllb][code:33y7tllb]data raw;
    input var;
    want=ifn(var>=5*10**floor(log10(var)),10**ceil(log10(var)),0.1*10**floor(log10(var)));
    format var want 8.6;
datalines;
0.050100
0.043200
0.003000
0.005300
0.000007
;[/code:33y7tllb][/quote:33y7tllb]

多谢hopewell的解答!!
作者: shiyiming    时间: 2011-11-14 22:48
标题: Re: 四舍五入问题
你要求的结果好像不是“根据每一个观测值的第一个非零数字进行四舍五入”;
另外有意思的是:0.1 will be converted to 0.01, but 0.05 be converted to 0.1.
anyway, code is funny -  want=ifn(var>=5*10**floor(log10(var)),10**ceil(log10(var)),0.1*10**floor(log10(var)));
作者: shiyiming    时间: 2011-11-15 21:34
标题: Re: 四舍五入问题
[quote="sun59338":m54jtm3o]你要求的结果好像不是“根据每一个观测值的第一个非零数字进行四舍五入”;
另外有意思的是:0.1 will be converted to 0.01, but 0.05 be converted to 0.1.
anyway, code is funny -  want=ifn(var>=5*10**floor(log10(var)),10**ceil(log10(var)),0.1*10**floor(log10(var)));[/quote:m54jtm3o]

是[quote:m54jtm3o]根据每一个观测值的第一个非零数字进行四舍五入[/quote:m54jtm3o],但的确也没注意0.1这种问题...多谢sun59338的提醒!!
作者: shiyiming    时间: 2011-11-17 11:25
标题: Re: 四舍五入问题
want=ifn()是什么意思?




欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/) Powered by Discuz! X3.2