[英]In Python how to find the least significant digit
我正在寻找一种希望找到的简单方法,即数字中的最低有效数字(浮点数或整数)。
例如:
101-> 1
101.2-> 0.2
1.1003-> 0.0003
诸如10、100、1000之类的案例的相关性稍差一些,尽管无论如何我都会对此感兴趣。
我并不特别在意格式,因此以更实际的方式识别结果是否更有意义。
例如:
101.2-> 0.1或10 ^ -1(对于相关幂/指数甚至为-1)很好。
对于其他情况,我正在尝试做的是:
可以说我有一个数字31.6,我希望能够将其变成31.5(将最低有效数字减少1)。 可以说我有16,我想将其变成15(相同的想法)。 如果我有数字100,我仍然想将数字变成99,但是我可能可以弄清楚那里的案子处理情况(不指定100.0,我认为1是最低有效数字,而递减1则为0,这不是我想要的是)。 这又与手动操作数据范围内的类中断有关(尽管不重要)。
显示我的作业: 这看起来很有希望 (至少SigDigit部分),但是它返回的数字没有任何(数学的)数字强度的引用(我也希望避免大量的字符串转换)。
这就是我搜索stackoverflow时出现的内容,但似乎没有帮助(如果我事先使用了错误的术语/搜索词句,我表示歉意)
如果您已经有浮子,那么它将无法正常工作。 Python浮点数不包含您需要的信息。 1.
和1.0
之间没有区别,如果将1.0
和3.0
0.3333333333333333
,则得到0.3333333333333333
(除了实际上是0.333333333333333314829616256247390992939472198486328125
)。
如果您输入的是字符串,则可以轻松完成:
def least_significant_digit_power(num_string):
if '.' in num_string:
# There's a decimal point. Figure out how many digits are to the right
# of the decimal point and negate that.
return -len(num_string.partition('.')[2])
else:
# No decimal point. Count trailing zeros.
return len(num_string) - len(num_string.rstrip('0'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.