Python打印与浮点相关的问题

Python打印与浮点相关的问题,python,printing,floating-point,Python,Printing,Floating Point,我不明白为什么精度字段的输出中没有打印5。4之后,6直接打印ly。为什么?点后键入的数字限制了小数点后的浮点数。因此,您的命令将打印数字及其小数部分的前5位。您将小数部分的位数限制为5位。当您这样做时,它会根据最后一位数字后的数字向上或向下舍入数字。在你的例子中,小数部分的第五位是5,之后是6。所以它把数字5四舍五入。我认为数学库中没有任何东西可以这样做,因为很明显,正常人会把这个数字四舍五入 但是,如果您真的想取整,无论出于什么原因,您都需要构建一个函数或导入其他人制作的库 您还可以创建一个函

我不明白为什么精度字段的输出中没有打印5。4之后,6直接打印
ly。为什么?

点后键入的数字限制了小数点后的浮点数。因此,您的命令将打印数字及其小数部分的前5位。

您将小数部分的位数限制为5位。当您这样做时,它会根据最后一位数字后的数字向上或向下舍入数字。在你的例子中,小数部分的第五位是5,之后是6。所以它把数字5四舍五入。

我认为数学库中没有任何东西可以这样做,因为很明显,正常人会把这个数字四舍五入

但是,如果您真的想取整,无论出于什么原因,您都需要构建一个函数或导入其他人制作的库

您还可以创建一个函数来执行此操作,例如:

print("%.5f" % 5.1234567890)  output is 5.12346  

让我知道这是否是您想要实现的目标。

这是否回答了您的问题?您错过了舍入部分。是的,舍入的数字
6
与下面的数字
6
相同,这只是巧合。使用
5.123457890
可以得到相同的结果。
import math

def round_decimals_down(number:float, decimals:int=2):
    if not isinstance(decimals, int):
        raise TypeError("A")
    elif decimals < 0:
        raise ValueError("B")
    elif decimals == 0:
        return math.floor(number)

    factor = 10 ** decimals
    return math.floor(number * factor) / factor

valueA = 5.1234567890
roundA = round_decimals_down(valueA, 5)
print(roundA)
output: 5.12345