clear
?Not_Round(11.987654321,6)
FUNCTION Not_Round(nExp1,nDec1)
LOCAL nDec2,cFormat,nExp2,cExp2
nDec2 = SET("DECIMALS") &&保存原先小数点位数,设置新的小数点位数
SET DECIMALS TO nDec1
IF nDec1>=1
cFormat = REPLICATE("9",INT(LOG10(nExp1))+1)+"."+REPLICATE("9",nDec1) &&设置掩码,如 9999.999
ELSE
cFormat = REPLICATE("9",INT(LOG10(nExp1))+1)
ENDIF
nExp2 = INT(nExp1*10^nDec1)/10^nDec1 &&根据小数点位数放大N倍,取整数,然后还原倍数
cExp2 = TRANSFORM(nExp2,cFormat) &&用掩码换行为字符,然后在转换为数值,目的是为了去掉多余的0,如 1.23400的后面2个0
nExp2 = VAL(cExp2)
SET DECIMALS TO nDec2 &&恢复小数点位数
RETURN nExp2
ENDFUNC