|
马上注册,结交更多同行朋友,交流,分享,学习。
您需要 登录 才可以下载或查看,没有帐号?注册
x
以前找过一些类似的方法,但通用性和灵活性都差强人意。因此花了一些时间总结了一个比较通用的关系式,应用该关系式可以将任意实数X转换为字符串Y,保留的小数位N可以随意改变,并且自动进行四舍五入的处理。
例如:
1.输入X=0.998,N=2,则输出Y="1.00"
2.输入X=-0.32589,N=3,则输出Y="-0.326"
3.输入X=125.4457,N=1,则输出Y="125.4"
等等
关系式如下:
IF X >= 0
FIRST_STRING = ITOS(FLOOR(FLOOR(X * 10 ^ N + 0.5) / (10 ^ N)))
IF FIRST_STRING != ""
X_STR = ITOS(FLOOR(X * 10 ^ N + 0.5))
X_LENGTH = STRING_LENGTH(X_STR)
Y = EXTRACT(X_STR,1,X_LENGTH - N) + "." + EXTRACT(X_STR,X_LENGTH - N + 1,N)
ELSE
X_STR = ITOS(FLOOR((X + 1) * 10 ^ N + 0.5))
X_LENGTH = STRING_LENGTH(X_STR)
Y = "0." + EXTRACT(X_STR,X_LENGTH - N + 1,N)
ENDIF
ELSE
FIRST_STRING = ITOS(FLOOR(FLOOR((ABS(X) + 1) * 10 ^ N + 0.5) / (10 ^ N) - 1))
IF FIRST_STRING != ""
X_STR = ITOS(FLOOR(ABS(X) * 10 ^ N + 0.5))
X_LENGTH = STRING_LENGTH(X_STR)
Y = "-" + EXTRACT(X_STR,1,X_LENGTH - N) + "." + EXTRACT(X_STR,X_LENGTH - N + 1,N)
ELSE
X_STR = ITOS(FLOOR((ABS(X) + 1) * 10 ^ N + 0.5))
X_LENGTH = STRING_LENGTH(X_STR)
Y = "-" + "0." + EXTRACT(X_STR,X_LENGTH - N + 1,N)
ENDIF
ENDIF
该关系未经过严格的测试,希望各位专家提出改进意见! |
|