SAS中PUT函数输出异常:如何确保变量始终保留1位小数?
解决SAS变量强制显示1位小数的问题
你的问题出在put(t0d,4.1)的格式宽度设置不足:4.1表示总宽度为4(包含符号、整数、小数点、小数位),但像-9.0这类负数需要5个字符位(-+9+.+0),SAS为了适配宽度会自动省略小数部分,导致出现无小数位的取值。
以下是两种修正方案:
方案1:转字符型变量并设置足够宽度
如果需要将变量转为字符型且强制显示1位小数,把格式宽度调整为能容纳所有字符的长度,比如5.1(适配负数场景),若数值整数位更多,可进一步加大宽度(比如两位整数用6.1):
data a; set a; dif = put(t0d, 5.1); drop t0d; run;
方案2:保留数值型变量并设置显示格式
如果后续还需要对该变量做计算,推荐直接给数值变量设置显示格式,这样存储的仍是数值,仅展示为1位小数:
data a; set a; dif = t0d; format dif 5.1; drop t0d; run;
如果不需要新建变量,直接修改原变量格式更简洁:
data a; set a; format t0d 5.1; run;
内容的提问来源于stack exchange,提问作者Catherine Papanikos
相关产品推荐
相关产品推荐

