【问题标题】:Python count number of digits for a value lower 1 [duplicate]Python计算值小于1的位数[重复]
【发布时间】:2020-01-13 16:02:25
【问题描述】:

在不使用字符串函数的情况下,python 中计算

例如,我有以下值之一:0.0001 或 0.1001 或 0.1234。

所有情况下的结果都应该是 4。

【问题讨论】:

  • 试试math.log10(0.0001)
  • @Jean-FrançoisFabre 对于0.000111,您会得到相同的答案,但我认为 OP 需要 6 个。
  • @Jean-FrançoisFabre 0.002 或 0.00111 怎么样? ;)
  • 你是对的。误读
  • 除非使用字符串转换,否则这个问题毫无意义,因为0.1234 是数字的字符串表示形式。

标签: python


【解决方案1】:

你可以这样做:

>>> x, i = 0.345223, 0
>>> while x*(10**i)//1 - x*(10**i) != 0: i+= 1
... 
>>> i
6

【讨论】:

  • 浮点数不准确在很多情况下可能会产生异常结果。
  • @Barmar 当然。
  • 我们可以使用str函数,即len(str(x).split('.')[-1])
  • @sleeping_coder op 要求提供非字符串函数
【解决方案2】:

你可以做一个快速的数学技巧,然后乘以 10,直到数字等于或大于 1:

i
0.0001

count
0

while i < 1:
i = i*10
  count += 1

count
4

【讨论】:

  • 这是小数点后零的个数,不是位数。
  • 可以找到另一个答案(这里)[stackoverflow.com/questions/6189956/…
  • 我的问题不够准确,我现在更正了。
  • 澄清:这适用于0到1之间的数字,并且不会计算小数中第一个非零之后的值。
猜你喜欢
  • 1970-01-01
  • 2011-05-13
  • 2018-01-17
  • 2023-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
相关资源
最近更新 更多