四舍五入到最近的10号

时间:2013-10-17 16:01:17

标签: python

我试图围绕两个浮点数的方程但它输出没有小数,它只是将它舍入到最接近的数字,例如21.3到21.当我把“,2”应该设置为舍入到最近的10日。

新代码:

def add(op1,op2):
    result = int(round(op1 + op2, -1))
    print("")
    print ("Output: %d + %d = %d" % (op1, op2, result))

输出:

Output: 10 + 10 = 20

NEW

输出:

Output: 10.3 + 10.9 = 21.0

代码:

def add(op1,op2):
    result = int(round(op1 + op2, 1))
    print("")
    print ("Output: %0.1f + %0.1f = %0.1f" % (op1, op2, result))

4 个答案:

答案 0 :(得分:9)

以下是如何将数字舍入到最接近的第十位:

>>> round(21.3331, 1)
21.3

以下是如何打印带有一个小数点的浮点数:

>>> print "%.1f" % (21.3331,)
21.3

请注意,如果您使用%d执行此操作,则会将其打印为四舍五入到最接近的整数:

>>> print "%d" % (21.3331,)
21

有关%格式如何工作的详情,请参阅String Formatting Operations docs

答案 1 :(得分:2)

这里很简单。

roundf(1.345 * 100) / 100

您只需将它乘以100,然后除以100,将值保留为2位小数。这应该比将其转换为字符串并返回更有效。

答案 2 :(得分:0)

您正在转换为int。这意味着您的结果是intint没有小数部分。此外,"%d"表示格式为int,因此在打印前它会隐式转换为int。在格式字符串中使用"%f"

def add(op1,op2):
    result = round(op1 + op2, 1)
    print("")
    print ("Output: %0.1f + %0.1f = %0.1f" % (op1, op2, result))

答案 3 :(得分:0)

这里有两件事:

  1. 正在计算的数字是否有分数成分?它们是整数(整数)还是浮点数(带小数点)。

  2. 如何显示它们?

  3. 区分两者很重要:

    1. 对两个整数的任何操作都会产生一个整数;一个没有小数部分的数字。这是结果的内部类型。

    2. 如果对两个浮点数(带小数点的数字)进行任何计算,结果将为浮点数。

    3. 如果您使用整数和浮点运算,结果将是浮点数。

    4. round函数更改了float的 precision (多少小数对您很重要)。到目前为止,我们还没有讨论如何显示打印

      要使用小数组件打印它,您需要格式化其显示的方式,而不是更改其存储和使用的方式,这对数字的类型没有区别。在这里你可以看到我打印一个带小数组件的整数,即使它没有一个:

      >>> i = 10 + 10
      >>> i
      20
      >>> print("{0:.2f}".format(i))
      20.00
      

      如果你有一个带小数部分的数字;那么取决于你如何展示它,会发生各种各样的事情:

      >>> i = 1.24556434532
      >>> print("{0:.2f}".format(i))
      1.25
      >>> print("{0:.1f}".format(i))
      1.2
      >>> print("{0:.3f}".format(i))
      1.246
      

      因此,请确保您在正确的地方做正确的事。