获得一个数值的有效小数位数(不含后面的0补位)
2006-04-21 12:30
260 查看
VFP6.0时,如果小数部分一样会有问题,如9.2222,转换就变为9.222200000000001
?GetXsLen(9420.51280) &&返回值4
?GetXsLen(0.23000) &&返回值2
?GetXsLen(5.0) &&返回值0
Function GetXsLen
Lparameters lnNum
Private All
lnDecBak=Set('DECIMALS')
Set Decimals To 18
Do Case
Case Version(5)<700 &&VFP6
lcNum=Transform(lnNum) &&VFP6.0时,如果小数部分一样会有问题,如9.2222,转换就变为9.222200000000001
Case Version(5)>=700 And Version(5)<900 &&VFP7、8
lcNum=Transform(lnNum)
If At('.',lcNum)>0
lnNumLen=Len(lcNum)
For I=lnNumLen To 1 Step -1
If !Substr(lcNum,I,1)=='0'
Exit
Endif
Endfor
lcNum=Left(lCNum,I)
Endif
Case Version(5)>=900 &&VFP9及以上
lcNum=Alltrim(Transform(lnNum),'0')
Endcase
XsLen=Len(lcNum)-Iif(At('.',lcNum)>0,At('.',lcNum),Len(lcNum))
Set Decimals To (lnDecBak)
Return XsLen
Endfunc
?GetXsLen(9420.51280) &&返回值4
?GetXsLen(0.23000) &&返回值2
?GetXsLen(5.0) &&返回值0
Function GetXsLen
Lparameters lnNum
Private All
lnDecBak=Set('DECIMALS')
Set Decimals To 18
Do Case
Case Version(5)<700 &&VFP6
lcNum=Transform(lnNum) &&VFP6.0时,如果小数部分一样会有问题,如9.2222,转换就变为9.222200000000001
Case Version(5)>=700 And Version(5)<900 &&VFP7、8
lcNum=Transform(lnNum)
If At('.',lcNum)>0
lnNumLen=Len(lcNum)
For I=lnNumLen To 1 Step -1
If !Substr(lcNum,I,1)=='0'
Exit
Endif
Endfor
lcNum=Left(lCNum,I)
Endif
Case Version(5)>=900 &&VFP9及以上
lcNum=Alltrim(Transform(lnNum),'0')
Endcase
XsLen=Len(lcNum)-Iif(At('.',lcNum)>0,At('.',lcNum),Len(lcNum))
Set Decimals To (lnDecBak)
Return XsLen
Endfunc
相关文章推荐
- JavaScript基础 toFixed() 将一个数值转成字符串,并进行四舍五入,保留指定位数的小数
- JavaScript基础 toFixed() 将一个数值转成字符串,并进行四舍五入,保留指定位数的小数
- 获得一个浮点数的小数位数
- 【C/C++】:如何获得一个float数的小数位数?
- 两个小数相乘,小数点后面位数没有限制,设计一个高精度算法
- NumberFormat 可用于格式化和解析任何语言环境的数值。使代码能够完全独立于小数点、千位分隔符甚至所用特定小数位数的语言环境约定,并与数值格式是否为偶小数无关
- 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.
- 自己封装的一个Edittext工具,让其只能输入指定位数的小数,同时不大于指定数
- 一个不多于5位的正整数位数统计、各位数值分解
- java中保留任意位数的小数/java中四舍五入/获得任意位数的方法
- ROUND 函数用于把数值字段舍入为指定的小数位数。
- SQL ROUND()(数值字段舍入为指定的小数位数)
- iOS输出数值控制位数(小数、整数)
- 写一个函数,要求传入一个1到n位数的随机数值,如传入随机数123456789,返回12345金币67银币89铜币,传入随机数1234,返回0金币12银币34铜币。 提示:推荐Int,Rnd,Mid,L
- fastreport 中 给数值形数据做 格式 保留小数位数以0补足
- EL表达式取整,去固定小数位数数值 fmt标签
- 浮点数的小数保留和有效位数
- 【matlab】 关于保留小数位数&有效数字的问题
- 设置Double类型数值对象的小数后位数
- Java学习-047-数值格式化及小数位数四舍五入