精华内容
下载资源
问答
  • 有效数字 | 相对误差与有效数位

    千次阅读 2020-05-20 00:00:27
    并且,从该起直到前面第一个非零数字为止的所有数字都称为有效数字,即有: 定义1:设x∗x^*x∗是一个准确,x是它的近似,若 ∣x∗−x∣<1/2×10−n |x^*-x|<1/2\times 10^{-n} ∣x∗−x∣<1/2×10−...

    有效数字

    数学上用“四舍五入”的法则将一个位数很多的数表示成一定位数的数。如果一个近似数的误差限是它某一位的半个单位,则称它准确到这一位(即该位数字是准确的、有效的和可靠的)。并且,从该位起直到前面第一个非零数字为止的所有数字都称为有效数字,即有:

    定义1:设 x ∗ x^* x是一个准确数,x是它的近似数,若
    ∣ x ∗ − x ∣ < 1 / 2 × 1 0 − n |x^*-x|<1/2\times 10^{-n} xx<1/2×10n
    就是说,用x近似表示 x ∗ x^* x时准确到小数点之后第n位(精确度),并把从该位起到x的第一位非零数字之间的一切数字都叫做有效数字,并把有效数字的位数叫做有效数位。

    例如:若将数x用规格化形式表示,则有
    x = ± 0 ⋅ a 1 a 2 a 3 ⋯ a s ⋯ a k × 1 0 m ( a 1 ≠ 0 ) x=\pm 0·a_1a_2a_3\cdots a_s\cdots a_k\times 10^m \quad (a_1\neq 0) x=±0a1a2a3asak×10m(a1=0)
    其中,s为有效数字的位数,m为阶数。m的确定方法如下:

    ∣ x ∣ ≥ 1 |x|\geq 1 x1时,则m=整数部分的位数;

    0.1 ≤ ∣ x ∣ < 1 0.1 \leq |x|<1 0.1x<1时,则 m = 0 m=0 m=0;

    ∣ x ∣ < 0.1 |x|<0.1 x<0.1时,则 m = − m=- m=(小数点后零的个数)


    ∣ x − x ∗ ∣ < 1 2 × 1 0 − n = 1 2 × 1 0 − ( s − m ) = 1 2 × 1 0 m − s , 1 ≤ s ≤ k (1) |x-x^*|<\frac{1}{2}\times 10^{-n} = \frac{1}{2}\times 10^{-(s-m)}=\frac{1}{2}\times 10^{m-s}, \quad 1\leq s\leq k \tag{1} xx<21×10n=21×10(sm)=21×10ms,1sk(1)
    则x的有效数位为:
    s = n + m (2) s=n+m \tag{2} s=n+m(2)
    应用公式(1)和(2)可以判断一个数的某一位数字是否为有效数字,从而可确定该数的有效数位。

    例1

    对于数 0.08698 , n = 5 , m = − 1 , s = n + m = 4 0.08698,n=5,m=-1,s=n+m=4 0.08698,n=5,m=1,s=n+m=4

    对于数 0.8698 , n = 4 , m = 0 , s = n + m = 4 0.8698,n=4,m=0,s=n+m=4 0.8698,n=4,m=0,s=n+m=4

    对于数 869.8 , n = 1 , m = 3 , s = n + m = 4 869.8,n=1,m=3,s=n+m=4 869.8,n=1,m=3,s=n+m=4

    对于数 8698 , n = 0 , m = 4 , s = n + m = 4 8698,n=0,m=4,s=n+m=4 8698,n=0,m=4,s=n+m=4

    一个数精确到小数点后n位,并不表明它一定有n位有效数字。应注意有效数位s的计算。

    例2:对于圆周率 π = 3.1415926 ⋯ \pi=3.1415926\cdots π=3.1415926,用四舍五入取小数点后4位时,近似值为 3.1416 3.1416 3.1416,此时
    ∣ π − 3.1416 ∣ ≤ 1 2 × 1 0 − 4 |\pi-3.1416|\leq \frac{1}{2}\times 10^{-4} π3.141621×104
    即有 m = 1 , n = 4 m=1,n=4 m=1,n=4,所以有效数位为 s = n + m = 5 s=n+m=5 s=n+m=5,绝对误差限为 1 2 × 1 0 − 4 \frac{1}{2}\times 10^{-4} 21×104

    如果取 π = 3.14 \pi=3.14 π=3.14,则 m = 1 , n = 2 m=1,n=2 m=1,n=2,有效数位为 s = n + m = 3 s=n+m=3 s=n+m=3,其绝对误差限为 1 2 × 1 0 − 2 \frac{1}{2}\times 10^{-2} 21×102

    例3:设 x ∗ = 8.000033 x^*=8.000033 x=8.000033,若取 x = 8.0000 x=8.0000 x=8.0000,则
    ∣ x − x ∗ ∣ = 0.000033 = 0.33 × 1 0 − 4 < 1 2 × 1 0 − 4 = 1 2 × 1 0 1 − 5 |x-x^*|=0.000033=0.33\times 10^{-4}<\frac{1}{2}\times 10^{-4}=\frac{1}{2}\times 10^{1-5} xx=0.000033=0.33×104<21×104=21×1015
    于是有 m = 1 , s = 5 , n = s − m = 5 − 1 = 4 m=1,s=5,n=s-m=5-1=4 m=1,s=5,n=sm=51=4。所以 8.0000 8.0000 8.0000的有效数字为5位,它精确到小数点后4位

    例4:设 x ∗ = 30.4500364 ⋯ x^*=30.4500364\cdots x=30.4500364若取 x = 30.45004 x=30.45004 x=30.45004,则
    ∣ x − x ∗ ∣ = 0.0000036 = 0.36 × 1 0 − 5 < 1 2 × 1 0 − 5 = 1 2 × 1 0 2 − 7 |x-x^*|=0.0000036=0.36\times 10^{-5}<\frac{1}{2}\times 10^{-5}=\frac{1}{2}\times 10^{2-7} xx=0.0000036=0.36×105<21×105=21×1027
    所以, 30.45004 30.45004 30.45004的有效数字为7位,它精确到小数点后5位。

    相对误差和有效数位之间的关系

    根据有效数字和相对误差的概念可以得出两者之间的关系。

    定理2:若近似数 x = ± 0. a 1 a 2 a 3 ⋯ a s − 1 a s × 1 0 m ( a 1 ≠ 0 ) x=\pm 0.a_1a_2a_3\cdots a_{s-1}a_s \times 10^m(a_1\neq 0) x=±0.a1a2a3as1as×10m(a1=0)具有s位有效数字,则其相对误差为:
    e r ( x ) ≤ ϵ r = 1 2 a 1 × 1 0 − s + 1 e_r(x)\leq \epsilon_r=\frac{1}{2a_1}\times 10^{-s+1} er(x)ϵr=2a11×10s+1
    例1:求 6 \sqrt{6} 6 的近似值,使其相对误差不超过 1 2 × 1 0 − 3 \frac{1}{2}\times 10^{-3} 21×103

    :因为 6 = 2.4494 \sqrt 6=2.4494 6 =2.4494,取 a 1 = 2 a_1=2 a1=2,设 6 \sqrt 6 6 取s位有效数字,则
    1 2 a 1 × 1 0 − s + 1 = 1 2 × 2 × 1 0 − s + 1 = 1 2 × 1 0 − 3 s = 3 ⋯   , 故 s ≥ 4 ,   6 ≈ 2.449 \frac{1}{2a_1}\times 10^{-s+1}=\frac{1}{2\times 2}\times 10^{-s+1}=\frac{1}{2}\times 10^{-3} \\ s=3\cdots ,故s\geq 4,\,\sqrt 6\approx 2.449 2a11×10s+1=2×21×10s+1=21×103s=3,s4,6 2.449
    定理3:若近似数 x = ± 0. a 1 a 2 a 3 ⋯ a s × 1 0 m ( a 1 ≠ 0 ) x=\pm 0.a_1a_2a_3\cdots a_s \times 10^m(a_1\neq 0) x=±0.a1a2a3as×10ma1=0的相对误差
    e r ( x ) ≤ 1 2 a 1 + 1 × 1 0 − s + 1 e_r(x)\leq \frac{1}{2a_1+1}\times 10^{-s+1} er(x)2a1+11×10s+1
    则该近似数有s位有效数字。

    从误差和有效数字的定义以及上述两个定理可以看出:绝对误差与小数点后的位数(数的精确度)有关;相对误差与有效数字的位数有关。

    展开全文
  • js有效数字 显示指定位数
  • 浮点数的有效数字位数

    千次阅读 多人点赞 2019-01-28 01:49:54
    过去有一种很普遍的说法是单精度浮点数的有效数字是6到7。同时也有一个很普遍的问题就是:“6到7是什么意思?到底是6还是7?”。现在似乎主流认知已经变成了单精度浮点数的有效数字就是7。事实究竟是怎么...

    过去有一种很普遍的说法是单精度浮点数的有效数字是6到7位。同时也有一个很普遍的问题就是:“6到7位是什么意思?到底是6位还是7位?”。现在似乎主流认知已经变成了单精度浮点数的有效数字就是7位。事实究竟是怎么样的?

    先说结论

    单精度浮点数可以保证7位10进制有效数字。如果一个数字用10进制表示时有效数字位数大于等于7位,那么用单精度浮点数记录的话,能确保至少正确记录前7位
    为什么说“至少”?比如,4294967296有10位10进制有效数字,但只有1位2进制有效数字(2进制表示是1后面32个0)。我们可以验证单精度浮点数是可以正确记录所有10位有效数字的。但上面只是特殊情况,对于随便给出的一个数,只有第7位和之前的有效数字是能确信正确的。

    凭什么说就是7位,为什么不是6位、8位?

    最简单的2进制的情况

    首先,我假设我们知道一个单精度浮点数种有24位2进制的有效数字(不知道的同学,请先自行搜索IEEE 754)。很显然,对于有24位或者以上2进制有效数字的数,单精度浮点数能保证前24位。

    再看看16进制

    我们知道16进制的1位对应2进制的4位(不知道的同学,……姑且4位2进制数刚好有16种不同的情况)。2进制的24位刚好对应16进制的6位,也就是能保证6位16进制的有效数字。
    但是假设我们只有23位2进制有效数字的话,那么我们就只能保证5位了。

    接下来我们更具体地看一下。假设有16进制数 8765432 1 ( 16 ) 87654321_{(16)} 87654321(16),我们可以写成 8.765432 1 ( 16 ) × 1 6 7 8.7654321_{(16)} \times 16^7 8.7654321(16)×167。2进制的话,可以写成 1000.011 1 ′ 011 0 ′ 010 1 ′ 010 0 ′ 001 1 ′ 001 0 ′ 000 1 ( 2 ) × 2 28 1000.0111&#x27;0110&#x27;0101&#x27;0100&#x27;0011&#x27;0010&#x27;0001_{(2)} \times 2^{28} 1000.0111011001010100001100100001(2)×228如果我们只有24位2进制有效数字,则后面一部分有效数字无法记录,就成了 1000.011 1 ′ 011 0 ′ 010 1 ′ 010 0 ′ 001 1 ( 2 ) × 2 28 1000.0111&#x27;0110&#x27;0101&#x27;0100&#x27;0011_{(2)} \times 2^{28} 1000.01110110010101000011(2)×228也就是 8.7654 3 ( 16 ) × 1 6 7 8.76543_{(16)} \times 16^7 8.76543(16)×167。如果再减少1位2进制有效数字的话 1000.011 1 ′ 011 0 ′ 010 1 ′ 010 0 ′ 00 1 ( 2 ) × 2 28 1000.0111&#x27;0110&#x27;0101&#x27;0100&#x27;001_{(2)} \times 2^{28} 1000.0111011001010100001(2)×228我们将只有3位2进制数001能用来表示最后1位16进制有效数字。我们知道,3位2进制数只有8种不同情况,无法区分16进制1位数的16种情况。更具体地,比如这样我们无法区分 8.7654 3 ( 16 ) × 1 6 7 8.76543_{(16)} \times 16^7 8.76543(16)×167 8.7654 2 ( 16 ) × 1 6 7 8.76542_{(16)} \times 16^7 8.76542(16)×167,因为它们的最后一位都会被表示成001。

    可以看到,无法保证有效数字的某一位,意味着我们没办法区分这一位可能出现的所有情况。反过来,如果说我们能保证某一位,说明去掉这一位之前所用掉的2进制有效数字位数后,我们还能剩下足够的2进制位数来区分这一位可能出现的所有情况

    回过头看前面我们用1位2进制表示10位10进制有效数字的情况。1位2进制有效数字有可能表示出10位的10进制有效数字,但是要能区分出10位10进制数的所有情况,我们还是需要更多的2进制位。

    万恶的10进制

    如果能见到神的话,我一定要问他人为什么要长10个指头而不是8个——如果不能是16个的话……

    下面我们要解决的问题是:去掉10进制某一位之前用掉的2进制有效数字后,我们怎么计算还剩下多少2进制位数。

    高能预警:这将不是个整数

    我们知道3位2进制数有8种不同情况,4位2进制数有16种不同情况。而每位有10种情况的10进制要对应2进制的多少位?咱们姑且直接用这结果 l o g 2 10 ≈ 3.322 log_210 \approx 3.322 log2103.322对于单精度浮点数,第N位10进制有效数字后还有 24 − N × l o g 2 10 24 - N \times log_210 24N×log210个2进制位可用。如果说单精度浮点数能保证N位有效数字,意味着N位后刚好不再有足够的2进制位数能区分10种不同情况。可以很容看出,这个N应该是让 N × l o g 2 10 N \times log_210 N×log210不大于24的最大的整数。也就是 N = ⌊ 24 l o g 2 10 ⌋ = 7 N = \lfloor {24 \over log_210} \rfloor = 7 N=log21024=7最终,我们得出N是7。( ⌊ x ⌋ \lfloor x \rfloor x表示对 x x x向下取整)

    至此为止,我们知道了该如何计算有限位数的2进制有效数字能保证的10进制有效数字位数。比如我们还可以计算53位2进制有效数字的双精度浮点数可以保证的10进制位数是 ⌊ 53 l o g 2 10 ⌋ = 15 \lfloor {53 \over log_210} \rfloor = 15 log21053=15

    正篇到此结束。

    后记

    这里开始,我不再保证能尽量说人话。

    换个角度

    因为有 M l o g 2 10 = l o g 2 2 M l o g 2 10 = l o g 10 2 M {M \over log_210} = {log_22^M \over log_210} = log_{10}2^M log210M=log210log22M=log102M所以单精度浮点能保证的有效数字位数等价于 2 24 2^{24} 224(也就是16777216)去掉最高位后的位数。很多人会说这个就是单精度浮点数能表示7位有效数字的原因。从这个角度解释也是可以的,但是直接这么下结论跳过的步骤太多了。而且从这角度解释铺垫起来会麻烦很多。

    “至少”的问题

    为了方便,我们看16进制。

    这个问题用24位有效数字不太好说,我们看23位。上面说了2进制23位是可以确保16进制的5位的。但是 1.234567 8 ( 16 ) × 1 6 7 = 1.001 0 ′ 001 1 ′ 010 0 ′ 010 1 ′ 011 0 ′ 011 1 ′ 100 0 ( 2 ) × 2 28 1.2345678_{(16)} \times 16^7 = 1.0010&#x27;0011&#x27;0100&#x27;0101&#x27;0110&#x27;0111&#x27;1000_{(2)} \times 2^{28} 1.2345678(16)×167=1.0010001101000101011001111000(2)×228保留23位有效数字是 1.001 0 ′ 001 1 ′ 010 0 ′ 010 1 ′ 011 0 ′ 0 1 ( 2 ) × 2 28 = 1.234564 × 1 6 7 1.0010&#x27;0011&#x27;0100&#x27;0101&#x27;0110&#x27;01_{(2)} \times 2^{28} = 1.234564 \times 16^7 1.0010001101000101011001(2)×228=1.234564×167好像出来了6位。应该很容易注意到,这里16进制的最高位只占用了2进制的1位,所以后面多了3位可用。

    所以计算第N位还能使用的2进制位数,不是简单的用总的2进制位数,减去 ( N − 1 ) × 4 (N - 1) \times 4 (N1)×4。而应该是减去第1位使用的2进制位数后,再减 ( N − 2 ) × 4 (N - 2) \times 4 (N2)×4

    你可能觉得这样我们前面的方法就不准确的了,其实不然。因为我们要计算的是位数最少的情况,而这样只会让位数变多。

    除了最开始提到的特殊情况,这是单精度浮点数正确表示超过7位10进制有效数字的更普遍的一种特殊情况。当然,这样最多只能表示出8位。

    非整数的位数是什么鬼

    拿10进制来讲,我们可以说第N位和 1 0 N 10^N 10N是对应的。比如我们想把3往左移动2位,就可以 3 × 1 0 2 = 300 3 \times 10^2 = 300 3×102=300。于是往左移动半位也就是 3 × 1 0 0.5 = 3 10 ≈ 9.487 3 \times 10^{0.5} = 3 \sqrt {10} \approx 9.487 3×100.5=310 9.487
    前面10进制1位对应2进制 l o g 2 10 ≈ 3.322 log_210 \approx 3.322 log2103.322。很显然 2 l o g 2 10 = 10 2^{log_210} = 10 2log210=10

    展开全文
  • 很简单的一小段代码,保存两位有效数字,欢迎指正。。
  • 从代码可以看出,前8位有效数字是没问题的,第9的输出和原数字没啥关系,也不符合四舍五入,因此不必过于担心,8位有效数字依然成立,至于显示出第9的值,不能保证其准确性。 (3)double值,前15位有效数字是...

    今天,陈老师和老王讨论一个问题,记下来和大家分享一下,有需要的同学,可以一起复习一下。
    1,首先是程序的调试观念。这个是重要的,学习任何一门语言,语法只能服从,老王建议熟能生巧,不要记忆或者背,因为这个东西很多时候是不可靠的,尤其是刚开始接触多门语言的时候,会出现很不适应的情况。因此,搞不清楚的时候,直接代码show结果,比任何书都有用!(这也是老王之前表达的很多书不合格的原因,有时候相互矛盾,学生无所适从)。学计算机的孩子们,要学习硅谷的叛逆精神,不要尽信书(此处经典大神级教材在学习初期还是要信的,之后你有了质疑的能力,也许就发现了好问题),发现书中的错误,是老王年轻时候的一个乐趣,现在也会,但琐事原因导致读书少了很多,惭愧。
    2,不多说理论,需要的搜索即可。
    关于float和double的有效数字问题,老王本以为没啥问题了,感谢陈老师的求实精神,老王受教了。所谓float的8位,double的16位(也有7位和15位的说法),大家不必强记,代码走一遍就了解了。

    class  Noname1
    {
    	public static void main(String[] args) 
    	{   
    		float f1=12.1234561f;//9位
    		float f2=12.1234565f;//最后一位为了检验四舍五入用
    		float f3=12.1234570f;//最后一位写成0,不会显示出来
    		double d1=123456.12345678902;//17位
    		double d2=123456.12345678906;//最后一位为了检验四舍五入用
    		double d3=123456.12345678909;//最后一位为了检验四舍五入用
    		double d4=123456.12345678910;//最后一位写成0,不会显示出来
            System.out.println("f1="+f1);
    		System.out.println("f2="+f2);
    		System.out.println("f3="+f3);
    		System.out.println("zhuan="+(float)d1);//测试double转float
    		System.out.println("d1="+d1);
    		System.out.println("d2="+d2);
    		System.out.println("d3="+d3);
    		System.out.println("d4="+d4);
    	}
    }
    

    在这里插入图片描述
    3,结果简要分析
    (1)float输出,前7位有效数字是真实值,第8位是估算值,可能和原始一致,可能是四舍五入上来的。这个结果和数学一致。因此可以得出,java下float8位有效数字的结论。
    (2)double转float为什么是9位输出?矛盾吗?从代码可以看出,前8位有效数字是没问题的,第9位的输出和原数字没啥关系,也不符合四舍五入,因此不必过于担心,8位有效数字依然成立,至于显示出第9位的值,不能保证其准确性。
    (3)double值,前15位有效数字是真实值,第16位是估算值,可能和原始一致,可能是四舍五入上来的(如d3,但d2不行,这个结果和数学貌似不一致。在下一点说明原因。)先得出结论,java下double16位有效数字的结论。

    至于此处显示的第17位,仅仅是因为其在理论范围内的值。为了进一步测试,换了几个数值。如下图(没错!086正常显示17位,087就进位了16位。这个是有效数字玩我吗?是传说中的系统问题吗?有兴趣的看下一点即可)
    在这里插入图片描述
    (4)float显示8位还是9位?double显示16位还是17位?
    经过理论部分的学习(此部分资料较多,可以自行搜索),float有效指数为23位二进制,double为53位二进制。
    float部分:
    12.1234565二进制1100.000111111001101011011000010111011111101010000111
    取23位:1100.0001111110011010110(11000010111011111101010000111)
    进位取1100.0001111110011010111
    十进制:12.123456954956055(取12.123457)

    double转float:
    123456.12345678902二进制
    11110001001000000.000111111001101011011101001101110101
    取23位:11110001001000000.000111(111001101011011101001101110101)
    进位取11110001001000000.001000
    转十进制123456.125

    double显示(主要解释086不进位,087进位即可)
    123456.123456789086
    二进制:11110001001000000.000111111001101011011101001101111001
    取53位:17+36位,整好53位
    所以保留后转十进制,还是123456.12345678908(显示17位)
    附上转换工具
    在这里插入图片描述
    123456.123456789087
    二进制:11110001001000000.00011111100110101101110100110111101
    取53位:17+35位=52,缺1位,在后面补1个0
    转十进制:123456.1234567891
    在这里插入图片描述
    综上,不是系统原因,二进制位可以解释。计算机的同学们建议把理论和实践联系一下,最基础的问题,能够挖一挖,可能会理解很多事情。
    因此,有效数字应该是以二进制为准,从数学上看,float的有效数字(8-9位显示)double的有效数字(16-17位显示)。
    望大牛路过时斧正错漏。

    展开全文
  • float有效数字位为6 – 7,第7不一定有效,字节为4,指数长度为8,小数长度为23。取值范围为 3.4E-38~3.4E+38。 double有效数字位为15 – 16,第16不一定有效,字节为8,指数长度为11,小数长度...

    具体参考《IEEE标准754》

    结论为:

    float有效数字位为6 – 7位,第7位不一定有效,字节数为4,指数长度为8位,小数长度为23位。取值范围为 3.4E-38~3.4E+38。对于9999999,其实为10000000。

    double有效数字位为15 – 16位,第16位不一定有效,字节数为8,指数长度为11位,小数长度为52位。取值范围为1.7E-308~1.7E+308。

    浮点数的内部存储为:

    浮点数的计算结果为:

    n,s,e,m分别为N,S,E,M对应的实际数值,而N,S,E,M仅仅是一串二进制位。
     S(sign)表示N的符号位。对应值s满足:n>0时,s=0; n<0时,s=1。
    E(exponent)表示N的指数位,位于S和M之间的若干位。对应值e值也可正可负。
     M(mantissa)表示N的尾数位,恰好,它位于N末尾。M也叫有效数字位(sinificand)、系数位(coefficient), 甚至被称作“小数”。

     

    在IEEE-754标准下,浮点格式主要分为四种类行,即单精度格式、双精度格式、扩展单精度格式和扩展双精度格式。其中32位单精度格式与64位双精度格式作为基础格式更为常用,扩展格式则有特殊目的,一般对用户透明。

     

    精度(有效数字)主要看尾数位: 
    float的尾数位是23bit,对应7~8位十进制数,所以有效数字有的编译器是7位,也有的是8位
    23位“尾数”位
    【2^23=8388608,一共7位,这意味着最多能有7位有效数字,但是能绝对能保证的为6位,也即float的精度为6~7位。】

    对于小于8388608的数字有效数字为7位,对于大于8388608的数字的有效数字为6位

    float fff=1.2345678912345;
    qDebug()<<QString("%1").arg(fff, 0, 'g', 14);

    结果为:1.2345678806305

    float fff=83886081234567;
    qDebug()<<QString("%1").arg(fff, 0, 'g', 14);

    结果为:83886080000000

    float fff=83886081;
    qDebug()<<QString("%1").arg(fff, 0, 'g', 14);

    结果为:83886080

    float fff=99999999;
    qDebug()<<QString("%1").arg(fff, 0, 'g', 14);

    结果为:100000000

     

     

     

     

     

     

     

    展开全文
  • num2 = "{:.3}".format(num) #3位有效数字 # 使用% num3 = "%.3f"%num #3小数 print(num) print(num1) print(num2) print(num3) 输出: 3.1415926 3.142 3.14 3.142 其他详细,参考:python基础_格式化输出(%...
  • 将double转换为n有效数字的字符 我找了各种帖子包括在微软文档搜索 ‘significant digits’;最接近的是ToString(“Gx”) 但是返回是不大于这个x有效的字符串, 举例 double a=1.2; string s=a.ToString(&...
  • 旭2015.03.19有效数字的基本概念数值修约及其进舍规则运算规则注意事项有效数字的基本概念有效数字系指在检验工作中所能得到有实际意义的...有效数字最后一数字的欠准程度通常只能是上下差1 单位有效数字的基本概念...
  • 近似数与有效数字的概念 近似数是由于近似存储(内存空间有限)引起的。 近似数是由四舍五入得来的数,如10/3中的3是一个准确数,而3.3是它...而有效数字是对于近似数从左边第一个不是0的数字起,到精确到的数位止...
  • 误差与有效数字

    千次阅读 2019-11-28 23:30:52
    文章目录绝对误差相对误差有效数字定理1定理2 绝对误差 绝对误差:e=x∗−xe = x^* - xe=x∗−x,其中xxx为近似值,x∗x^*x∗为精确值。 ∣e∣|e|∣e∣的上限记为ϵ\epsilonϵ,称为绝对误差限,记为x=x∗±ϵx=x^* ...
  • 本文将讨论示波器有效位ENOB,以及ENOB对实际信号测试的影响,并结合实际应用,给出EXCEL求解的方法。  1.前言    由图表 1数字示波器系统结构可知,信号通过探头系统进入示波器后,经过衰减器和前置...
  • 转换为两位有效数字重点在于: y_pred_new=np.round(y_pred,2) 之前试过用 print(round(y_pred[0:10],2)) 有点异想天开,单个数字这样是可以的,但对于多维数组而言,是会报错的,如下: TypeError: type numpy....
  • 刚学过数值分析,题库中有大量有四舍五入得到的近似,求有效数字、绝对误差限、相对误差限等。作为一名软件工程专业学生,感觉还是做出一个程序来替我完成比较好,所以就做了这个,累计用来两个小时左右,仓促...
  • 数字处理,保留几位有效数字

    千次阅读 2019-03-07 16:20:23
    数字处理:保留几位有效数字 不废话,直接分享代码与思想 数字过大或者过小的时候,js解析为科学计数的格式,怎么把数字转换为string类型的呢?请看刚刚分享的Js 科学计算法,number类型与string类型转换,然后就是...
  • ![图片说明](https://img-ask.csdn.net/upload/201811/22/1542892222_949065.png) 正确结果应该为 1124000727777611309520 但是程序从3后面全部保留0了 各位大佬还有什么打一点的数据类型嘛 !...
  • 单精度浮点数(float)总共用32来表示浮点数,其中尾数用23存储,加上小数点前有一隐藏的1(IEEE754规约表示法),2^(23+1) = 16777216。因为 10^7 &lt; 16777216 &lt; 10^8,所以说单精度浮点数的有效...
  • js保留有效数字

    千次阅读 2019-01-28 11:00:56
    JavaScript中数字保留有效数字位数的方法有三种:toFixed,toExponential,toPrecision,这三种方法都会把数字转成字符串。 1.toFixed()根据小数点后的指定位数将数字转为字符串,不会使用指数计数法。 2....
  • 1.问题描述: 最近在处理软件结果显示时,发现如果利用 Math.Round(Number,N) 取N为小数时,有的结果不能显示完全 ...我想要的结果是 15.32 和 0.0011(保留两位有效数字),怎么实现呢? - class Program { ...
  • 简单的说,把一个数字前面的0都去掉,从第一个正整数到精确的数位止所有的都是有效数字了。 如:0.0109,前面两个0不是有效数字,后面的109均为有效数字(注意,中间的0也算)。 BigDecimal类型的小数可以使用...
  • c++ 保留有效数字和小数

    千次阅读 2018-09-18 17:16:30
    一、保留n位有效数字 采用四舍五入方式。 int main() { double a = 3.141564; cout &lt;&lt; setprecision(3) &lt;&lt; a; // a = 3.14 return 0; } 二、保留n小数 采用四舍五入...
  • Java 保留N位有效数字

    2020-04-28 10:43:00
    double d=1.200; BigDecimal b = new BigDecimal(String.valueOf(d)); BigDecimal divisor = BigDecimal.ONE; MathContext mc = new MathContext(2); //保留几就把2改成几 System.out.println(...
  • 目录一、问题引出与求证二、问题查阅与解决三、MATLAB如何修改计算结果保留的有效数字四、拓展——数值显示四、后记 一、问题引出与求证 今天,利用MATLAB编写乘同余法产生随机数相关代码时,遇到一个问题: (下图...
  • 对一个浮点型数字保留两小数并输出: #include #include ...这里要注意,单独用setprecision(2)是保留两位有效数字,会输出1.2e+002 也可以在字符串中进行保留小数的操作 #include #inclu
  • 保留几小数 两种简单地使用方式 其实就是一种 第一种:**cout<<setiosflags(ios::fixed)<<setprecision(n)<<num;这里的n就是要保留几小数 第二种:**cout<<fixed<<setpreci....
  • 数值分析中有效数字的定义理解及计算

    万次阅读 多人点赞 2019-09-29 21:46:42
    一、有效数字的定义 要定义有效数字,我们需要首先给出下面几个定义,其实都是很简单能理解的东西,但是用数学公式表达一下就有点绕。 误差: 若x∗x^{\ast }x∗是准确值xxx的一个近似值,则称e∗=x∗−xe^{\ast }=...
  • 数值分析一-误差与有效数字

    千次阅读 2020-09-22 22:30:00
    书中有效数字定义 用科学计数法,记xA=±10k×0.a1a2a3⋯an⋯x_A=\pm10^k\times0.a_1a_2a_3\cdots a_n\cdotsxA​=±10k×0.a1​a2​a3​⋯an​⋯(其中a1=...0.5×10k−n,则称xAx_AxA​为有n位有效数字,精确到10k−n10
  • 数值分析 有效数字计算

    千次阅读 2019-08-27 21:00:29
    设数x是数x的近似值,如果x的绝对误差限是它的某一数位的半个单位,并且从x左起第一个非零数字到该数位共有n位,则称这n个数字为x的有效数字,也称用x近似x时具有n位有效数字。 —《数值分析(第2版)》张铁 阎家斌 ...
  • c语言保留n位有效数字问题

    千次阅读 2021-01-15 19:58:07
    之前写过一个,打的时候还是忘了 再写一遍 #include <iomanip> cout << setiosflags(ios::fixed) << setprecision(6);...作用是:规定输出小数点的位数,不够补零。...今天遇到个新的问题:如果后缀有00...
  • 读书之法 ,在循序而渐进 ,熟读而精思 有效数字有效数字计算修约基础知识 一有效数字 1末的概念 末指任何一个最末一数字所对应的单位量值 例用分度值为 0.1mm 的卡尺测量物体的长度结果为 19.8mm 最末一的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,036,085
精华内容 414,434
关键字:

有效数字