主题:[求助]如何既保留小数位数又能截取固定字符长度?
小女子还要大侠们帮帮忙了,多谢多谢啦,呵呵。
有一个dbf表,下有三列,A为数值型的,B、C均为字符型的,
其中A列的小数位数均为3位,小于等于9999.999。
A B C
12.123 ML
125.100 MG
1320.020 L
101.000 G
3.005 MG
1.500 G
4.000 ML
15.000 UG
0.050 ML
0.125 G
0.100 G
0.901 MG
..... ....
以下省略
呵呵,菜鸟俺的表述能力实在是太差了,再描述一遍,呵呵。
现在想将C列用‘A+ ' '+B’替换,但是需要达到如下结果,即
截取A列的从左数四个字符([color=FF0000]数字不四舍五入[/color],截止到多少算多少),
[color=FF0000]对于 >=100&<=9999.999 的数值,取其整数;
对于 >=10&<=99.999 的数值,取从左至右四个字符;
注意:
对于实际小数点位数为0的数值,直接取整数,如15.000、39.000、89.000等,直接取其整数15、39、89。
对于 >=1&<=9.999 的数值,取从左至右四个字符;
注意:
对于实际小数点位数为0位的数值,直接取整数,如1.000、3.000、8.000等,直接取其整数1、3、8。
对于实际小数点位数为1位的数值,直接取到小数点后一位,如3.500、7.900、9.300等,直接取到小数点后一位,即3.5、7.9、9.3。
对于 >=0.001&<=0.999 的数值,取从左至右四个字符;
注意:
对于实际小数位数为1位的,如0.600、0.900、0.800等,直接取到小数点后一位,即0.6、0.9、0.8.[/color]
C列想要达到的替换结果如下
12.1 ML
125 MG
1320 L
101 G
3.00 MG
1.5 G
4 ML
15 UG
0.05 ML
0.12 G
0.1 G
0.90 MG
如果单纯用命令
replace all C with left(allt(str(A,8,3)),4)+' '+allt(B)
达不到我想要的结果。
请各位大侠帮帮忙啊,多谢多谢。
在线等,请大家伸出援手啊,呵呵。
有一个dbf表,下有三列,A为数值型的,B、C均为字符型的,
其中A列的小数位数均为3位,小于等于9999.999。
A B C
12.123 ML
125.100 MG
1320.020 L
101.000 G
3.005 MG
1.500 G
4.000 ML
15.000 UG
0.050 ML
0.125 G
0.100 G
0.901 MG
..... ....
以下省略
呵呵,菜鸟俺的表述能力实在是太差了,再描述一遍,呵呵。
现在想将C列用‘A+ ' '+B’替换,但是需要达到如下结果,即
截取A列的从左数四个字符([color=FF0000]数字不四舍五入[/color],截止到多少算多少),
[color=FF0000]对于 >=100&<=9999.999 的数值,取其整数;
对于 >=10&<=99.999 的数值,取从左至右四个字符;
注意:
对于实际小数点位数为0的数值,直接取整数,如15.000、39.000、89.000等,直接取其整数15、39、89。
对于 >=1&<=9.999 的数值,取从左至右四个字符;
注意:
对于实际小数点位数为0位的数值,直接取整数,如1.000、3.000、8.000等,直接取其整数1、3、8。
对于实际小数点位数为1位的数值,直接取到小数点后一位,如3.500、7.900、9.300等,直接取到小数点后一位,即3.5、7.9、9.3。
对于 >=0.001&<=0.999 的数值,取从左至右四个字符;
注意:
对于实际小数位数为1位的,如0.600、0.900、0.800等,直接取到小数点后一位,即0.6、0.9、0.8.[/color]
C列想要达到的替换结果如下
12.1 ML
125 MG
1320 L
101 G
3.00 MG
1.5 G
4 ML
15 UG
0.05 ML
0.12 G
0.1 G
0.90 MG
如果单纯用命令
replace all C with left(allt(str(A,8,3)),4)+' '+allt(B)
达不到我想要的结果。
请各位大侠帮帮忙啊,多谢多谢。
在线等,请大家伸出援手啊,呵呵。