有微软码工吗?解释一下EXCEL里sin(pi())为啥不是零? (转载)

z
zeami
楼主 (未名空间)

【 以下文字转载自 Military 讨论区 】
发信人: srx (srx), 信区: Military
标 题: 有微软码工吗?解释一下EXCEL里sin(pi())为啥不是零?
发信站: BBS 未名空间站 (Wed Oct 27 11:47:38 2021, 美东)

你这误差有点大啊,excel到底能不能当作严肃的计算工具啊?

z
zeami

1.22515e-16

【 在 zeami (贼阿米) 的大作中提到: 】
: 【 以下文字转载自 Military 讨论区 】
: 发信人: srx (srx), 信区: Military
: 标 题: 有微软码工吗?解释一下EXCEL里sin(pi())为啥不是零?
: 发信站: BBS 未名空间站 (Wed Oct 27 11:47:38 2021, 美东)
: 你这误差有点大啊,excel到底能不能当作严肃的计算工具啊?

z
zeami

叔真无聊。机器没睡就试了一下

【 在 zeami (贼阿米) 的大作中提到: 】
: 1.22515e-16

B
BroPingtou

跟Lambda比确实误差大了点
【 在 zeami (贼阿米) 的大作中提到: 】
: 1.22515e-16

z
zeami

闲着也是闲着。去试下LibreOffice

【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 跟Lambda比确实误差大了点

z
zeami

呃。手提上居然没装。看来是上周在工地用的

【 在 zeami (贼阿米) 的大作中提到: 】
: 闲着也是闲着。去试下LibreOffice

B
BroPingtou

我的表格都用gdocs了
【 在 zeami (贼阿米) 的大作中提到: 】
: 闲着也是闲着。去试下LibreOffice

z
zeami

啥协议?GPL的几个协议我都读过,装工地机没问题

【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 我的表格都用gdocs了

z
zeami

感觉称协议不妥。应该问啥条款?
还是执照条款?糊涂了

【 在 zeami (贼阿米) 的大作中提到: 】
: 啥协议?GPL的几个协议我都读过,装工地机没问题

B
BroPingtou

这不省事儿吗,开个网页就能淦
【 在 zeami (贼阿米) 的大作中提到: 】
: 啥协议?GPL的几个协议我都读过,装工地机没问题

H
Huangchong

双精度 可不就是15-16位吗

【 在 zeami (贼阿米) 的大作中提到: 】
: 1.22515e-16

z
zeami

网页的条款一般都是你给的数据都是伊的财产了

【 在 BroPingtou (ǢŦĦȆȐ) 的大作中提到: 】
: 这不省事儿吗,开个网页就能淦

H
Huangchong


每次都忘了这字念干 心想: 操?搞?日?neng4?
【 在 BroPingtou (0803030303) 的大作中提到: 】
: 这不省事儿吗,开个网页就能淦

z
zeami

问题是为毛需要写sin(pi())。。
而且既然写的内参pi()确实该出零

【 在 Huangchong (净坛使者) 的大作中提到: 】
: 双精度 可不就是15-16位吗

z
zeami

以为念qin1

【 在 Huangchong (净坛使者) 的大作中提到: 】
: 每次都忘了这字念干

H
Huangchong


一般编程语言应该也给有误差的结果吧 我拿python试了 也是1.22e-16

sage math 倒是会给个0

但是sage也有它自己的特色

比如输入 sin(0.99999999999999*pi()) 9足够多的话 会自动变成sin(1.
00000000000*pi())

【 在 zeami (贼阿米) 的大作中提到: 】
: 问题是为毛需要写sin(pi())。。
: 而且既然写的内参pi()确实该出零

H
Huangchong


sage math

如果打 sin(pi) 或者 sin(1*pi)会给出0

如果打 numerical_approx(sin(1.0*pi) )还是会给出1.22e-16

numerical_approx是必须的 不然只会输出算式

【 在 Huangchong (净坛使者) 的大作中提到: 】
: 一般编程语言应该也给有误差的结果吧 我拿python试了 也是1.22e-16
: sage math 倒是会给个0
: 但是sage也有它自己的特色
: 比如输入 sin(0.99999999999999*pi()) 9足够多的话 会自动变成sin(1.
: 00000000000*pi())

z
zeami

用math.pi呢?

【 在 Huangchong (净坛使者) 的大作中提到: 】
: 一般编程语言应该也给有误差的结果吧 我拿python试了 也是1.22e-16
: sage math 倒是会给个0
: 但是sage也有它自己的特色
: 比如输入 sin(0.99999999999999*pi()) 9足够多的话 会自动变成sin(1.
: 00000000000*pi())

z
zeami

那内参还是零。浮点算下确实没法零

【 在 Huangchong (净坛使者) 的大作中提到: 】
: sage math
: 如果打 sin(pi) 或者 sin(1*pi)会给出0
: 如果打 numerical_approx(sin(1.000000000000*pi) )还是会给出1.22e-16
: numerical_approx是必须的 不然只会输出算式

z
zeami

sage是毛骚操作,还没用过

【 在 zeami (贼阿米) 的大作中提到: 】
: 那内参还是零。浮点算下确实没法零

H
Huangchong

python就是用math.pi

np.sin (no.pi) 也是一样的

这种行为应该是程序员预期的 如果真的给0 可能还不好

【 在 zeami (贼阿米) 的大作中提到: 】
: 用math.pi呢?

z
zeami

hmmmm,我会写成np.sin(math.pi)

【 在 Huangchong (净坛使者) 的大作中提到: 】
: python就是用math.pi
: np.sin (no.pi) 也是一样的
: 这种行为应该是程序员预期的 如果真的给0 可能还不好

d
dakedo

Matlab也这精度啊
问题不大

【 在 zeami (贼阿米) 的大作中提到: 】
: 发信人: srx (srx), 信区: Military
: 标 题: 有微软码工吗?解释一下EXCEL里sin(pi())为啥不是零?
: 发信站: BBS 未名空间站 (Wed Oct 27 11:47:38 2021, 美东)
: 你这误差有点大啊,excel到底能不能当作严肃的计算工具啊?

H
Huangchong

sage允许任意精度运算

比如输入
numerical_approx(sin(1.0*pi),100) 就可以得1.69..e-31

如果把精度改成1000就得 1.25….e-301 估计精度就是二进制浮点数的mantissa位数


普通双精度数是52位mantissa 2^(-52)=2.22e-16

如果1000位 正好就是 2^(-1000)=9.33e-302

【 在 zeami (贼阿米) 的大作中提到: 】
: sage是毛骚操作,还没用过

H
Huangchong

估计是一回事 np.pi 和math.pi 无非就是存了个浮点数 还没山巅一寺一壶酒….
乐尔乐位数多

【 在 zeami (贼阿米) 的大作中提到: 】
: hmmmm,我会写成np.sin(math.pi)

z
zeami

以前算阀出来的谐震波才需要写角度
而且数据输出只写四个浮点
从来没考虑过这问题

【 在 dakedo (大蝌蚪) 的大作中提到: 】
: Matlab也这精度啊
: 问题不大

z
zeami

学到了。用不到

【 在 Huangchong (净坛使者) 的大作中提到: 】
: sage允许任意精度运算
: 比如输入
: numerical_approx(sin(1.0*pi),100) 就可以得1.69..e-31
: 如果把精度改成1000就得 1.25….e-301 估计精度就是二进制浮点数的mantissa位数
: :
: 普通双精度数是52位mantissa 2^(-52)=2.22e-16
: 如果1000位 正好就是 2^(-1000)=9.33e-302

a
andrewaa

excel最令人发指的是不遵守数学规范
你可以去试试-2^2

H
Huangchong

果然 我在python里打山巅….乐尔乐 它只能记住16位

sage倒是可以记住22位 只是把末尾自动四舍五入而已

【 在 Huangchong (净坛使者) 的大作中提到: 】
: 估计是一回事 np.pi 和math.pi 无非就是存了个浮点数 还没山巅一寺一壶酒….
: 乐尔乐位数多

z
zeami

谐振。现在随手都是错别字

【 在 zeami (贼阿米) 的大作中提到: 】
: 以前算阀出来的谐震波才需要写角度
: 而且数据输出只写四个浮点
: 从来没考虑过这问题

z
zeami

黄总您为毛需要辣摸多位啊
切四位差不多得了

【 在 Huangchong (净坛使者) 的大作中提到: 】
: 果然 我在python里打山巅….乐尔乐 它只能记住16位
: sage倒是可以记住22位 只是把末尾自动四舍五入而已

z
zeami

猜出来(-2)^2 ?
否则可能需要写成-1*2^2 ?

【 在 andrewaa (AndrewAA) 的大作中提到: 】
: excel最令人发指的是不遵守数学规范
: 你可以去试试-2^2

H
Huangchong

似乎银行需要任意精度运算 比如贝索斯的钱换成委内瑞拉元就需要:

2e11 x 4e6

【 在 zeami (贼阿米) 的大作中提到: 】
: 学到了。用不到

z
zeami

叔持委内瑞拉元,咋整都差不多

【 在 Huangchong (净坛使者) 的大作中提到: 】
: 似乎银行需要任意精度运算 比如贝索斯的钱换成委内瑞拉元就需要:
: 2e11 x 4e6

H
Huangchong

libreoffice也是

【 在 andrewaa (AndrewAA) 的大作中提到: 】
: excel最令人发指的是不遵守数学规范
: 你可以去试试-2^2

z
zeami

明天上工时间装一个,能打发五分钟

【 在 Huangchong (净坛使者) 的大作中提到: 】
: libreoffice也是

z
zeami

想起来了,当年切四个点是输入永远写成一
然后另外再整体处理数据
这样不容易出错

【 在 zeami (贼阿米) 的大作中提到: 】
: 黄总您为毛需要辣摸多位啊
: 切四位差不多得了

c
codeplay

上Julia的sinpi(1)
p
pinfish

这说明用的是机械的浮点,没有整那种所谓任意精度的花活
一般普通计算没问题
数值模拟很多时候都手动设个ZERO 一般也就e-8 e-10