7

我正在尝试对两个浮点数的方程式进行四舍五入,但它的输出不带小数,它只是将其四舍五入到最接近的数字,例如 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

新的

输出:

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

4 回答 4

18

以下是如何将数字四舍五入到最接近的十分之一:

>>> round(21.3331, 1)
21.3

以下是如何打印出带一位小数的浮点数:

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

请注意,如果您使用%d它,它将被打印为四舍五入到最接近的整数:

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

有关格式化如何工作的更多信息,请参阅字符串格式化操作文档%

于 2013-10-17T16:15:54.453 回答
2

这是一个简单的。

roundf(1.345 * 100) / 100

您只需将其乘以 100,然后再除以 100,即可将值保留到小数点后 2 位。这应该比将其转换为字符串并返回要有效得多。

于 2014-09-22T01:50:10.470 回答
1

您正在转换为int. 这意味着您的结果是int. ints 没有小数部分。此外,"%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))
于 2013-10-17T16:18:37.030 回答
1

这里有两件事:

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

  2. 我如何显示它们?

区分两者很重要:

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

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

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

round函数更改浮点数的精度(有多少小数对您很重要)。到目前为止,我们还没有讨论事物是如何显示打印的。

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

>>> 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

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

于 2013-10-17T16:19:41.760 回答