python - 如何获取 round() 函数小数点后的确切位数

标签 python algorithm

假设我有

float_number = 3.05321355"

我想将我的结果限制为仅 5 个字符(在我将其转换为字符串之后)。所以结果是从左边算起的 5 个字符(包括小数点),这就是我要添加到 round() 函数的小数点后的位置。

float_number 的 5 个字符版本:

float_number_5_char = 3.053

它是小数点后 3 个小数位,所以这是我要四舍五入的位置。

round(float_number, 3)

有没有一种算法或方法可以找出最多 5 个字符的任何 float 的小数位数?

另一个例子:

float_1 = 32.53235
float_1_5_char = 32.53

所以这是小数点后 2 个小数位。

float_2 = 0.53235
float_2_5_char = 0.532

所以这是小数点后 3 位。

我试着想出这样的东西:

round_place = len(str(value)) - len(str(value)[:5])

但这并不适用于所有 float 。

编辑:该函数的前提条件是该值是从 0-999.99

最佳答案

对于正数,可以用一个简单的公式得到小数点左边的位数:

left = int(math.log10(x))+1 if x >= 10 else 1

现在你可以四舍五入了:

r = round(x, n - 1 - left)

关于python - 如何获取 round() 函数小数点后的确切位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909826/

相关文章:

algorithm - Twice-3SAT NP-complete

python - 为什么 object.__getattr__ 不见了?

python - MatPlotLib FuncAnimation 不适用于非零间隔或 blit=True

python - 将 Pyinstaller 与 NLTK 一起使用会导致错误 : can't find nltk_data

c++ - 计算给定零钱的方法数量

C++ 字符串差异(一种 Python 的差异库)

java - 给定 int top、bottom、left 和 right,如何横穿 2D 数组?

OSX 上的 Python 请求

python - 如何在python中转换 float ?

c++ - 搜索巨大的排序数据 block