在计算=SIN(PI())
公式的Excel中,它返回1.22515E-16
。如果直接给出PI()
Value(3.14159265358979)
,如= SIN(3.14159265358979),则返回3.23114E-15
任何人都可以分享您对Excel如何以不同方式计算的意见,以及PI'和3.14159265358979作为参数传递。
答案 0 :(得分:1)
您看到这个的原因是因为舍入错误。
Sin(PI())
技术上为0,详见the Sin function documentation。但是,Excel会返回1.22515E-16
或0.0000000000000001225148455
(即大约0
)
3.14159265358979
是PI()
的近似值,因此它返回的值与0
大致相同。如果您尝试3.1415926535897
,3.141592653589
等,则每次都会获得不同的数字。
这可能与使用floats有关,但我对Excel及其存储数据的详细说明知之甚少。
答案 1 :(得分:1)
我们有以下示例:
A2
是公式=PI()
。
A3
的值为3.14159265358979
。
A5
是从A2
复制的值,然后是paste-special:仅限值。
专栏B
中的公式为=SIN(A2)
... =SIN(A5)
。
那么这里发生了什么?
虽然使用IEEE 754的双浮点精度将Microsoft
证明截断值为15位数,但这不是全部。根据IEEE 754,可能的小数位数不是15,而是平均15.95。因此在某些情况下可能存在更多数字。如果是这样,Excel
在其文件中最多可存储17位数字,尽管它在工作表视图中仅显示15位数字,并且在其工作表视图中也只能输入15位数字。
因此=PI()
将完全导致3.1415926535897931
,并且还会存储此值。但手动输入只能是3.14159265358979
。但是,如果你复制/粘贴特殊:值=PI()
的结果,那么3.1415926535897931
也将被存储,尽管只显示3.14159265358979
。
由于*.xlsx
个文件只是ZIP
个档案,我们可以解压缩它们并查看/xl/worksheets/sheet1.xml
。我们会在那里找到:
<row r="2" spans="1:2" x14ac:dyDescent="0.25">
<c r="A2" s="1">
<f>PI()</f>
<v>3.1415926535897931</v>
</c>
<c r="B2">
<f>SIN(A2)</f>
<v>1.22514845490862E-16</v>
</c>
</row>
<row r="3" spans="1:2" x14ac:dyDescent="0.25">
<c r="A3" s="1">
<v>3.14159265358979</v>
</c>
<c r="B3">
<f>SIN(A3)</f>
<v>3.2311393144413003E-15</v>
</c>
</row>
<row r="5" spans="1:2" x14ac:dyDescent="0.25">
<c r="A5" s="1">
<v>3.1415926535897931</v>
</c>
<c r="B5">
<f>SIN(A5)</f>
<v>1.22514845490862E-16</v>
</c>
</row>
q.e.d。
答案 2 :(得分:0)
SIN()
函数接受radians
中的参数。
要将角度转换为弧度,该值必须乘以PI()/180
。
如果您使用=SIN(PI())
,则PI被视为等于RADIANS(180)
的弧度。 =SIN(PI())
和=SIN(RADIANS(180))
都会返回相同的结果0
。
=SIN(3.14159265358979)
实际上并不等于=SIN(PI())
,因为此上下文中的PI不同。因此结果不同。
底线是始终使用弧度作为三角函数的参数。