manlty 发表于 2011-8-18 11:55:05

如何判断小数点后有几位?

本帖最后由 manlty 于 2011-8-18 15:01 编辑

怎么判断一个浮点数的小数点后有几位呢?
比如1.50;1.5

3mile 发表于 2011-8-18 21:25:44

#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

leon460 发表于 2011-8-18 15:06:32

回复 1# manlty

提供一个思路;
将浮点转换为字符串,然后判断 .的下标,总长度减去下标再减去1即可。

manlty 发表于 2011-8-18 16:26:27

回复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’没法正确判断原数字是精确到小数点后两位的

manlty 发表于 2011-8-18 16:27:14

难道小问题除了考住我自己,也把众多高手问住了?

kevinch 发表于 2011-8-18 16:27:24

本帖最后由 kevinch 于 2011-8-18 16:28 编辑

stringlen(string($n-int($n)))-2
同2楼差不多的想法

或者stringsplit(string($n),"."),然后数组第二个的长度

manlty 发表于 2011-8-18 16:29:21

楼上大侠,这个不行。因为如果小数最后一位是0,转换的时候是少这个0的

kevinch 发表于 2011-8-18 17:00:07

要判断小数位数做什么用啊?而且你怎么能知道一个浮点数是1.50呢,按理后面是不可能有个无意义的0的,除非你是用stringformat之类的定义出来了位数的。

manlty 发表于 2011-8-18 17:04:27

当然是程序需要对一些数据判断精确到小数点后几位的。
1.50 和1.5在数学上意义是不同的
因为前者表示数据精确到小数点后二位,后者表示精确到后一位

紫色风林 发表于 2011-8-18 17:24:42

学习一下,谢谢大家

daiyu116 发表于 2011-8-18 18:47:03

回复 1# manlty
这样不行么?

$str="11.5000"
MsgBox(0,"小数点后位数",StringLen($str)-StringInStr($str,"."))

manlty 发表于 2011-8-18 19:50:32

回复manlty
这样不行么?
daiyu116 发表于 2011-8-18 18:47 http://www.autoitx.com/images/common/back.gif

问题是原始数据是一个浮点数,不是字符串,我就是想让程序去判断这个数是精确到小数点后几位的

www378660084 发表于 2011-8-18 20:00:27

你原始数据是怎么得到的呢?除非你写在程序里,否则,要不精确度是程序生成的,本来就没有后面那个0.要不是从字符串得到的,那它原始就是个字符串,在转成浮点数之前判断就好了。你要得到精度。除非你自己写个数在程序里,这样才会出现你说的那种情况~~~~
页: [1]
查看完整版本: 如何判断小数点后有几位?