参考4楼
https://bbs.bccn.net/thread-341386-1-1.htmlSTR(<数值表达式>[,<总长度>[,<其中小数位数>]])函数作用是将数值表达式转换为指定长度和小数位数的字符串,其中总长度的默认值是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”前面有一个空格