decimal 能直接判断有效小数的位数麽?比如1.110000 则是2位。

boyyao 2020-07-02 06:09:30
不希望用indexof或者.tostring之类的转来转去.有没有直接得到有效小数点位数的方法?

如:
1.1110000 得到 3
1.1111000 得到 4
1.1010100 得到 5
1.000 或者 1 得到 0
...全文
4569 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
耗子哭死猫 2020-07-03
  • 打赏
  • 举报
回复
用正则表达式比较好,个人建议
jie344556726 2020-07-03
  • 打赏
  • 举报
回复
“有效小数”这种说法我没听过
csdnFUCKINGSUCKS 2020-07-03
  • 打赏
  • 举报
回复
没有这种方法 结帖吧
luj_1768 2020-07-03
  • 打赏
  • 举报
回复
我觉得你对有效小数位的理解有偏差:占位零是有效数字,并非可有可无的(与数字精度有关)。有效数字通常应用于专业软件中,科学计算和工程计算中都有需求。在软件中实现有效数字控制,通常需要声明变量时用宏指令或者格式说明语句明确声明。通用软件有不同版本,有的版本(特别是免费版本)不支持相关操作。
securitit 2020-07-03
  • 打赏
  • 举报
回复
做一下转换,去除无效位,然后直接取精度. BigDecimal bd = new BigDecimal("3.1002000"); bd = BigDecimal.valueOf(bd.doubleValue()); System.out.println(bd.scale());
securitit 2020-07-03
  • 打赏
  • 举报
回复
做一下转换,去除无效位,再取精度; BigDecimal bd = new BigDecimal("3.1002000"); bd = BigDecimal.valueOf(bd.doubleValue()); System.out.println(bd.scale());
圣殿骑士18 2020-07-03
  • 打赏
  • 举报
回复
有点错误,应该是: var val = (bd - Math.Round(bd)).ToString().TrimStart('.').TrimEnd('0');
github_36000833 2020-07-03
  • 打赏
  • 举报
回复
圣殿骑士18 2020-07-03
  • 打赏
  • 举报
回复
只会用toString的怎么办?
Decimal bd = 3.1002000M;
                        var val = (bd - Math.Round(bd)).ToString().Trim(new char[] { '.', '0' });
                        Console.WriteLine(val);
  • 打赏
  • 举报
回复
编写程序判断

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧