Math.sin(Math.PI)
返回1.2246467991473532E-16
Math.sin(-Math.PI)
返回-1.2246467991473532E-16
但一定不能归零吗?
虽然来自3.14
和3.15
的罪是正确的。
答案 0 :(得分:11)
Math.PI
不是“完全”π,它只是π的近似16位数近似值(3.141592653589793)。没有浮点格式可以精确地存储π。这就是为什么你没有得到确切的零。
答案 1 :(得分:2)
您无法完全代表PI,因此您无法获得准确的结果。如果您认为这是一个错误,我建议您完成结果。
将其打印为(int)Math.sin(Math.PI)
,您将获得0
请注意,Math.sin
到int将始终给出0或-1
答案 2 :(得分:2)
计算机中浮点函数的本质是它们不精确(参见Drop中的链接)。
如果要在功能点之后将值最多舍入为2(或任何)数字,则可以执行
(Math.rint(1e2*Math.sin(Math.PI)))/1e2