STR(<数值表达式>[,<总长度>[,<其中小数位数>]])函数作用是将
数值表达式转换为
指定长度和小数位数的
字符串,其中总长度的默认值是
10,小数位数的默认值为
0
并且在实际操作中,总长度要
大于或等于数值表达式的
整数部分的长度,才能完成命令。
1.如果总长度
大于数值表达式长度 或
大于 数值表达式
整数部分和指定小数部分的长度总和,若此时数值的
小数位少于指定的小数位数,那么要将它补齐,
添加“0”到最低位即最右边;如果数值的小数位
等于指定的小数位数,那么多余的字节应该放到
最高位即最左边,为空格。
2.如果总长度
小于数值表达式长度,特别注意在转换取值的时候,是
从左往右算起的,而且遵循
四舍五入的原则,也就是说,
假如指定的小数位数比从左往右取完整数后剩下的位数要多,实际保留的小数只能占总长度减去整数部分后的长度,如果超出了就四舍五入到剩下的位数。
其中小数点算一位。
如果最后一位数是小数点“.”的话,那么应该舍去小数点,把多出的那一个字节放在最高位(即最左边),即此时最高位为空格
因此二楼所说:
“? STR (1234.5678,5,2)
屏幕显示:1235
&&显示5位数是"1234.",其中没有小数,所以屏显1235,字符串是"1235 ",
5后面有一个空格."
应该是不对的,空格应该在‘1’前面
你可以做:
? STR (1234.5678,5,2)
? STR (1234.5678,9,4)
将它们的位数对比一下~可以很容易看出来~
此外:
? STR (1234.5678,7,1)
&&总长度为7,要1位小数
屏幕显示:
1234.6
&&从左往右到"1234."已经是5位,而总长度是7,发现能够取到一位小数,因此四舍五入到一位小数“1234.6”,此时只占了6个字节,多余的那一位字节同样放到最高位,即“1”前有一个空格
? STR (1234.5678,10,4)
屏幕显示:
1234.5678
&&同理,“1”前面有一个空格