Math Sqrt与小数

Math Sqrt与小数,math,decimal,square-root,sqrt,Math,Decimal,Square Root,Sqrt,在误差小于1的情况下,是否需要任何标准的小数位数才能从它的sqrt分解中重建一个数字 我的意思是:sqrt(200000)=447.21359。。。 如果我试图用两个小数来重建我的数字,我有 (447.21)^2=199996.7841 但是如果我使用第一个三位小数我得到 (447.213)^2=199999.467369这是一个与原始数字相比小于1的错误 对于我需要保存的小数位数,有什么公式吗?让y成为一个数字,x=sqrt(y)它的平方根,假设我们对有误差的平方根有一个近似值z 然后 对于小

在误差小于1的情况下,是否需要任何标准的小数位数才能从它的sqrt分解中重建一个数字

我的意思是:sqrt(200000)=447.21359。。。 如果我试图用两个小数来重建我的数字,我有 (447.21)^2=199996.7841 但是如果我使用第一个三位小数我得到
(447.213)^2=199999.467369这是一个与原始数字相比小于1的错误


对于我需要保存的小数位数,有什么公式吗?

y
成为一个数字,
x=sqrt(y)
它的平方根,假设我们对有误差的平方根有一个近似值
z

然后

对于小型
eps
。换句话说,如果希望平方的误差小于1,则平方根的误差应大约小于
1/sqrt(y)

因此,对于您的示例,错误应该小于

1 / sqrt(200000) = 0.002236....
或者,如果你想更精确,并考虑到系数2的话,是这个数字的一半。因此,正如您所发现的,这个公式告诉您,在您的情况下,需要精确到逗号后面的第三位。

计算
a=Sqrt(200000-1)=447.2124774645716
并使用大于
a
的Sqrt(200000)


这里
447.21
但是
447.213>a
当重平方根等于或大于原始值+/-1时,误差将为1,因此只需找出x+1的平方根(误差在+侧更高)和x的平方根之间的差:

maximum error = sqrt(x+1) - sqrt(x)
e、 g:

所以你需要3位数

完整公式为:


所需十进制数字=ceil(-log10(sqrt(x+1)-sqrt(x))

扩展samgak的答案,并以另一种方式阐明cfh的答案:

 sqrt(x+1) - sqrt(x) = 1 / (sqrt(x+1) + sqrt(x) ) < 1 /  (2*sqrt(x))
sqrt(x+1)-sqrt(x)=1/(sqrt(x+1)+sqrt(x))<1/(2*sqrt(x))

通过第三个二项式公式。要将
sqrt(x+1)
sqrt(x)
sqrt(x-1)
大致在它们之间的线段中点分开,精确结果的修改
sqrt(x)
应小于
1/(4*sqrt(x))

(sqrt(200000)+0.0021)^2=200001.878301511,这是一个超过1@samgak:您在大Oh分析中忽略了因子2。回答很好,感谢您提供的公式,我发现它是正确的,但您需要在其中添加1:)如果您将值四舍五入到小数点后的3位,那么它将是447.214,而不是447.213。447.214^2=200000.361796我投票结束这个问题,因为它实际上是关于数学的,而不是编程或软件开发。
sqrt(200001) - sqrt(200000) = 0.001118033
 sqrt(x+1) - sqrt(x) = 1 / (sqrt(x+1) + sqrt(x) ) < 1 /  (2*sqrt(x))