Python 我需要添加或重新排列什么,以便有另一个小数位?
我在CS的第一年,我们使用Python3。我设法正确编码并将其提交到gradescope中,但它不正确,因为缺少一个小数点(末尾的4)。我的教授告诉我重新排列方程式,所以我试着交换数字,但仍然没有给出我想要的答案 我把相乘的数字换成了它旁边的数字,但它只会把数字丢得更多Python 我需要添加或重新排列什么,以便有另一个小数位?,python,python-3.x,Python,Python 3.x,我在CS的第一年,我们使用Python3。我设法正确编码并将其提交到gradescope中,但它不正确,因为缺少一个小数点(末尾的4)。我的教授告诉我重新排列方程式,所以我试着交换数字,但仍然没有给出我想要的答案 我把相乘的数字换成了它旁边的数字,但它只会把数字丢得更多 import math import stdio import sys theta = float(sys.argv[1]) n1 = float(sys.argv[2]) n2 = float(sys.argv[3]) t
import math
import stdio
import sys
theta = float(sys.argv[1])
n1 = float(sys.argv[2])
n2 = float(sys.argv[3])
theta1_rad = theta1*math.pi/180
theta2_rad = math.asin(n1*math.sin(theta1_rad)/n2)
theta2 = theta2_rad*180/math.pi
print(theta2)
当我将$python3 snell.py 58 1 1.52
插入终端时,我期望得到33.912513998258994
的输出,但实际得到的输出是33.91251399825899
,如回答类似问题时所述,请尝试使用numpy.float128。或者,您也可以按照已接受答案中的说明进行选择。如在类似问题的答案中所述,尝试使用numpy.float128。或者你也可以按照公认的答案去做
import math
import sys
theta = float(sys.argv[1])
n1 = float(sys.argv[2])
n2 = float(sys.argv[3])
theta1_rad = round(theta*math.pi/180,15)
theta2_rad = round(math.asin(n1*math.sin(theta1_rad)/n2),15)
theta2 = round(theta2_rad*180/math.pi,15)
print(theta2)
试试这个,希望它能按照你的期望工作
试试这个,希望它能按照你的期望工作 如果你的评分系统期望的是浮点计算结果的精确匹配,那它就太糟糕了。(有一些有限的、特定的环境,有时可能是合理的,但一年级的CS学生不会在这些环境中工作。)我使用了
print(f'{theta:.16f}')
。我得到了…89871
只是好奇你使用的是哪种操作系统?@PranavVoid我正在使用macbook上的oracle虚拟机!如果你的评分系统期望的是浮点计算结果的精确匹配,那它就太糟糕了。(有一些有限的、特定的环境,有时可能是合理的,但一年级的CS学生不会在这些环境中工作。)我使用了print(f'{theta:.16f}')
。我得到了…89871
只是好奇你使用的是哪种操作系统?@PranavVoid我正在使用macbook上的oracle虚拟机!我不是OP,但即使在使用numpy后我仍然得到…89871
。我不是OP,但即使在使用numpy后我仍然得到…89871
。这是一个延迟响应,但它立即解决了我的问题。非常感谢你!很高兴帮助你解决你的问题。你能把它标记为正确答案吗?这是一个迟来的回答,但它马上解决了我的问题。非常感谢你!很高兴帮助你解决你的问题。你能证明这是正确答案吗?