找回密码
 加入
搜索
查看: 4395|回复: 12

[效率算法] 如何判断小数点后有几位?

  [复制链接]
发表于 2011-8-18 11:55:05 | 显示全部楼层 |阅读模式
本帖最后由 manlty 于 2011-8-18 15:01 编辑

怎么判断一个浮点数的小数点后有几位呢?
比如1.50;1.5
发表于 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[1])
EndFunc
发表于 2011-8-18 15:06:32 | 显示全部楼层
回复 1# manlty

提供一个思路;
将浮点转换为字符串,然后判断 .  的下标,总长度减去下标再减去1即可。
 楼主| 发表于 2011-8-18 16:26:27 | 显示全部楼层
回复  manlty

提供一个思路;
将浮点转换为字符串,然后判断 .  的下标,总长度减去下标再减去1即可。
leon460 发表于 2011-8-18 15:06



    你这个我写过了,问题是碰到1.50这样的,在string(1.50)时,得到的字符串是 ‘1.5’而不是‘1.50’没法正确判断原数字是精确到小数点后两位的
 楼主| 发表于 2011-8-18 16:27:14 | 显示全部楼层
难道小问题除了考住我自己,也把众多高手问住了?
发表于 2011-8-18 16:27:24 | 显示全部楼层
本帖最后由 kevinch 于 2011-8-18 16:28 编辑

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

或者stringsplit(string($n),"."),然后数组第二个的长度
 楼主| 发表于 2011-8-18 16:29:21 | 显示全部楼层
楼上大侠,这个不行。因为如果小数最后一位是0,转换的时候是少这个0的
发表于 2011-8-18 17:00:07 | 显示全部楼层
要判断小数位数做什么用啊?而且你怎么能知道一个浮点数是1.50呢,按理后面是不可能有个无意义的0的,除非你是用stringformat之类的定义出来了位数的。
 楼主| 发表于 2011-8-18 17:04:27 | 显示全部楼层
当然是程序需要对一些数据判断精确到小数点后几位的。
1.50 和1.5在数学上意义是不同的
因为前者表示数据精确到小数点后二位,后者表示精确到后一位
发表于 2011-8-18 17:24:42 | 显示全部楼层
学习一下,谢谢大家
发表于 2011-8-18 18:47:03 | 显示全部楼层
回复 1# manlty
这样不行么?

$str="11.5000"
MsgBox(0,"小数点后位数",StringLen($str)-StringInStr($str,"."))
 楼主| 发表于 2011-8-18 19:50:32 | 显示全部楼层
回复  manlty
这样不行么?
daiyu116 发表于 2011-8-18 18:47


问题是原始数据是一个浮点数,不是字符串,我就是想让程序去判断这个数是精确到小数点后几位的
发表于 2011-8-18 20:00:27 | 显示全部楼层
你原始数据是怎么得到的呢?除非你写在程序里,否则,要不精确度是程序生成的,本来就没有后面那个0.要不是从字符串得到的,那它原始就是个字符串,在转成浮点数之前判断就好了。你要得到精度。除非你自己写个数在程序里,这样才会出现你说的那种情况~~~~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-2 21:24 , Processed in 0.081238 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表