Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python圆形计算器_Python_Int_Rounding - Fatal编程技术网

Python圆形计算器

Python圆形计算器,python,int,rounding,Python,Int,Rounding,嘿,我还是个小傻瓜,但我在玩python,我想把D四舍五入到最接近的小数点,C和H是固定的,D是原始输入,整个答案应该四舍五入,但我不断得到小数,我想要这个公式: Q=[(2*C*D)/H]的平方根 她是我的密码:* import math C=50 H=30 D=int(raw_input()) a=int(round(D)) Q= math.sqrt(2*C*a/H) print Q 如果我输入100我得到18.24 我只希望它是18 非常感谢您的帮助,谢谢您的代码似乎在错误的位置取整

嘿,我还是个小傻瓜,但我在玩python,我想把D四舍五入到最接近的小数点,CH是固定的,D是原始输入,整个答案应该四舍五入,但我不断得到小数,我想要这个公式:

Q=[(2*C*D)/H]的平方根

她是我的密码:*

import math

C=50
H=30
D=int(raw_input())
a=int(round(D))

Q= math.sqrt(2*C*a/H)
print Q
如果我输入100我得到18.24

我只希望它是18


非常感谢您的帮助,谢谢您的代码似乎在错误的位置取整。您正在将输入的
a
四舍五入,它已经是整数
D
。您没有对平方根
Q
的结果进行四舍五入,这是一个浮点值

请注意,您的代码实际上有一个额外的舍入步骤,您可能不打算在其中。在Python2中,当您除以两个整数时,您将得到另一个整数,即使计算应该有一个余数。您得到的是地板分割,总是向负无穷大舍入,而不是最接近的整数(例如
9/10
0
)。在您的代码中,
2*C*a
是一个整数,因为您要乘以的所有值都是,因此当您除以
h
(另一个整数)时,它将舍入除法。如果您输入了作为用户输入的
100
,那么除法的结果将是
333
,而不是更精确的
333.3333
。这反过来会使平方根计算给出不同的值(
18.24828759089466
而不是
18.257418583505537

无论如何,您可能希望在任何地方都使用浮点值,但在打印之前对值进行四舍五入时,可能会在末尾使用浮点值。您几乎肯定不希望像当前代码那样意外地使用整数数学。一种方法是将一个常量值转换为浮点,并将舍入移动到末尾:

C=50.0                              # make the calculations use floats, rather than ints
H=30
D=int(raw_input())                  # no need for `a` anymore, we're rounding later instead
Q= int(round(math.sqrt(2*C*D/H)))   # round after taking the square root, not before

使用
C=50.0
的另一种方法是将
from\uuuuu future\uuuuu import division
放在文件顶部,这告诉Python您希望整数之间的除法返回一个
浮点值。这是Python3中的默认行为,在大多数情况下都非常好。如果您特别想要“floor”分割,您可以使用
/
操作符显式地请求它。你也可以考虑实际使用Python 3,而不是用Python 2的转发兼容性特性来做。< /P>那么转换它吗?你只舍入输入号,而不是结果<代码> Q= int(圆(Q))<代码>代码>打印轮(Q)< /代码>。
C=50.0                              # make the calculations use floats, rather than ints
H=30
D=int(raw_input())                  # no need for `a` anymore, we're rounding later instead
Q= int(round(math.sqrt(2*C*D/H)))   # round after taking the square root, not before