当前位置: 首页 > 知识库问答 >
问题:

查找小数点后的位数

令狐嘉运
2023-03-14

我正在尝试编写一个Python 2.5.4代码来编写一个函数,该函数以浮点数x作为输入,并返回x中小数点后的位数。

这是我的代码:

def number_of_digits_post_decimal(x):
    count = 0
    residue = x -int(x)
    if residue != 0:
        multiplier = 1
        while int(multiplier * residue) != (multiplier * residue):
            count += 1
            multiplier = 10 * multiplier
            print count
            print multiplier
            print multiplier * residue
            print int(multiplier * residue)
            return count

print number_of_digits_post_decimal(3.14159)

while循环中的print语句仅用于调试目的。

现在,当我运行这段代码时,我得到以下输出。

1

10

1.4159

1

2

100

14.159

14

3

1000

141.59

141

4

10000

1415.9

1415

5

100000

14159.0

14158

6

1000000

141590.0

141589

7

10000000

1415900.0

1415899

8

100000000

14159000.0

14158999

9

1000000000

....

这个函数返回的count的最终值是17。

如何修改这个代码以达到我们想要的结果?

共有1个答案

卢杰
2023-03-14

这里有一个你可能会喜欢的捷径:

def num_after_point(x):
    s = str(x)
    if not '.' in s:
        return 0
    return len(s) - s.index('.') - 1
 类似资料:
  • 我想知道是否有一种简洁而准确的方法来提取十进制值中的小数点位数(以int形式),这样在不同的区域性信息中使用是安全的? 例如: 19.0应返回1, 27.5999应返回4, 19.12应返回2, 等。 但我想到,这只适用于使用“.”的区域。作为小数分隔符,因此在不同系统中非常脆弱。

  • 我想把一个数字四舍五入到小数点后2位,但也保留后面的2个零,例如425.1382到425.1400,我在下面的例子中尝试过,但它似乎不起作用 或

  • 问题内容: 我如何转换为? 问题答案: 您是否要仅用一位数字表示它: 或实际上四舍五入其他小数位? 甚至严格舍弃?

  • 将双精度数字相乘,从输出中取小数点后两位 expectedRenewalAmount的输出是,那么我们如何用两个十进制数格式化上述输出 预期:

  • 我有一个,我希望将用户的输入限制为纯数字或小数最多2位的数字。 基本上,我要求的是一个价格输入。 我想避免做正则表达式。有办法做到吗?

  • 问题内容: 我的表中有以下列表。 我怎样才能得到小数点后的位数。 重复?: 我已经检查了现有的帖子,但是没有正确的方法来处理 数字 。 结果 编辑 :花了一些宝贵的时间后,我发现了一些相对简单的脚本来处理此问题。 问题答案: 我找到了一些简单的脚本(相对于我而言)来处理此问题。 此处仅用于处理不带小数部分的浮点数。如果没有没有小数部分的值,那么这很简单 希望对您有帮助。完整脚本如下