[英]Rounding floats to nearest 10th
我试图围绕两个浮点数的方程,但它输出没有小数,它只是舍入到最接近的数字,例如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))
以下是如何将数字舍入到最接近的十位:
>>> round(21.3331, 1)
21.3
以下是如何打印带有一个小数点的浮点数:
>>> print "%.1f" % (21.3331,)
21.3
请注意,如果使用%d
执行此操作,它将打印为四舍五入到最接近的整数:
>>> print "%d" % (21.3331,)
21
有关%
格式设置的工作原理的更多信息,请参阅字符串格式化操作文档 。
这是一个简单的问题。
roundf(1.345 * 100) / 100
您只需将它乘以100,然后除以100,将值保留为2位小数。 这应该比将其转换为字符串和返回更有效。
你正在转换为int
。 这意味着你的结果是一个int
。 int
s没有小数部分。 此外, "%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))
这里有两件事:
正在计算的数字,它们是否有一个小数部分? 它们是整数(整数)还是浮点数(带小数点)。
我该如何显示它们?
区分两者很重要:
对两个整数的任何操作都将产生一个整数; 一个没有小数部分的数字。 这是结果的内部类型。
如果对两个浮点数(带小数点的数字)进行任何计算,结果将为浮点数。
如果使用整数和浮点数运算,结果将是浮点数。
round
函数改变float的精度 (对你来说有多少小数)。 到目前为止,我们还没有讨论如何显示或打印事物。
要使用小数组件打印它,您需要格式化它的显示方式 ,而不是更改其存储和使用方式,这不会对数字的类型产生影响。 在这里你可以看到我打印一个带小数组件的整数,即使它没有一个:
>>> 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
因此,请确保您在正确的地方做正确的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.