SAS中无需四舍五入将数值保留2位小数的实现方法咨询
SAS保留两位小数且不触发四舍五入的实现方案
你可以通过截断小数位+指定固定小数格式的组合实现需求,不需要用到四舍五入相关函数:
方案1:保留数值类型
使用TRUNC函数先截断多余小数位,再给变量指定两位小数的输出格式即可,小数位不足时会自动补零:
data result; input raw_num; /* 直接截断到2位小数,无四舍五入 */ processed_num = trunc(raw_num, 2); /* 指定输出格式为最多16位整数+2位小数,不足小数位补零 */ format processed_num 18.2; datalines; 1234.1 777777 65797667.11 ; run;
运行后processed_num的输出结果和你预期完全一致:
- 1234.10
- 777777.00
- 65797667.11
方案2:输出为字符类型
如果需要直接得到带两位小数的字符结果,结合PUT函数实现即可:
num_char = put(trunc(raw_num, 2), 18.2);
注意事项
- 格式声明里的总长度(上述示例的18)要大于等于你数据里最长数值的总位数(整数位+小数点+2位小数),否则会输出星号报错
- 不要使用
ROUND类函数处理,会触发四舍五入逻辑,不符合你的要求
内容的提问来源于stack exchange,提问作者Dinesh G
相关产品推荐
相关产品推荐

