如何判断小数点后有几位?
本帖最后由 manlty 于 2011-8-18 15:01 编辑怎么判断一个浮点数的小数点后有几位呢?
比如1.50;1.5 #include <array.au3>
Local $Number=1.5
$Number=StringFormat("%.2f",$Number)
msgbox(0,$Number,"精确到小数点后:"&flot_bit($Number))
msgbox(4096,0,$Number+2)
Func flot_bit($Number)
$split=StringSplit($Number,".",3)
if Not @error Then Return StringLen($split)
EndFunc
回复 1# manlty
提供一个思路;
将浮点转换为字符串,然后判断 .的下标,总长度减去下标再减去1即可。 回复manlty
提供一个思路;
将浮点转换为字符串,然后判断 .的下标,总长度减去下标再减去1即可。
leon460 发表于 2011-8-18 15:06 http://www.autoitx.com/images/common/back.gif
你这个我写过了,问题是碰到1.50这样的,在string(1.50)时,得到的字符串是 ‘1.5’而不是‘1.50’没法正确判断原数字是精确到小数点后两位的 难道小问题除了考住我自己,也把众多高手问住了? 本帖最后由 kevinch 于 2011-8-18 16:28 编辑
stringlen(string($n-int($n)))-2
同2楼差不多的想法
或者stringsplit(string($n),"."),然后数组第二个的长度 楼上大侠,这个不行。因为如果小数最后一位是0,转换的时候是少这个0的 要判断小数位数做什么用啊?而且你怎么能知道一个浮点数是1.50呢,按理后面是不可能有个无意义的0的,除非你是用stringformat之类的定义出来了位数的。 当然是程序需要对一些数据判断精确到小数点后几位的。
1.50 和1.5在数学上意义是不同的
因为前者表示数据精确到小数点后二位,后者表示精确到后一位 学习一下,谢谢大家 回复 1# manlty
这样不行么?
$str="11.5000"
MsgBox(0,"小数点后位数",StringLen($str)-StringInStr($str,"."))
回复manlty
这样不行么?
daiyu116 发表于 2011-8-18 18:47 http://www.autoitx.com/images/common/back.gif
问题是原始数据是一个浮点数,不是字符串,我就是想让程序去判断这个数是精确到小数点后几位的 你原始数据是怎么得到的呢?除非你写在程序里,否则,要不精确度是程序生成的,本来就没有后面那个0.要不是从字符串得到的,那它原始就是个字符串,在转成浮点数之前判断就好了。你要得到精度。除非你自己写个数在程序里,这样才会出现你说的那种情况~~~~
页:
[1]