NSDecimalNumber 是NSNumber的子类。

使用 [NSNumber numberWithDouble:]方法来格式我的NSNumber,但是,由于一些值比较大,我想要用科学计数法来表示。

NSDecimalNumber就提供了科学计数法的表示方法。

什么是科学计数法?

  将一个数字表示成 (a×10的n次幂的形式),其中1≤a<10,n表示整数,这种记数方法叫科学记数法。
  用幂的形式,有时可以方便的表示日常生活中遇到的一些较大的数,如:光的速度大约是300 000 000米/秒;全世界人口数大约是:6 100 000 000
  这样的大数,读、写都很不方便,考虑到10的幂有如下特点:
  10的二次方=100,10的三次方=1000,10的四次方=10 000……。
  一般的,10的n次幂,在1的后面有n个0,这样就可用10的幂表示一些大数,如:
  6 100 000 000=61×1 000 000 000=6.1×10的九次方。
  任何非0实数的0次方都等于1
  当有了负整数指数幂的时候,小于1的正数也可以用科学记数法表示。例如:0.00001=10的负5次方,即小于1的正数也可以用科学记数法表示为a乘10 的负n次方的形式,其中a是正整数数位只有一位的正数,n是正整数。
  有效数字
  有效数字是指从左面数不为0的数
  例如:890314000保留三位有效数字为8.90*10的8次方
  839960000保留三位有效数字为8.40*10的8次方
  0.00934593保留三位有效数字为0.00935
  
科学记数运算

  数字很大的数,一般我们用科学记数法表示,例如6230000000000;我们可以用6.23×10^12表示,而它含义是什么呢?从直面上看是将数字6.23中6后面的小数点向右移去12位。
  若将6.23×10^12写成6.23E12,即代表将数字6.23中6后面的小数点向右移去12位,在记数中如
  1. 3×10^4+4×10^4=7×10^4可以写成3E4+4E4=7E4
  即 aEc+bEc=a+bEc (1)
  2. 4×10^4-7×10^4=-3×10^4可以写成4E4-7E4=-3E4
  即 aEc-bEc=a-bEc (2)
  3. 3000000×600000=1800000000000
  3e6*6e5=1.8e12
  即 aEM×bEN=abE(M+N) (3)
  4. -60000÷3000=-20
  -6E4÷3E3=-2E1
  即 aEM÷bEN=a/bE(M-N) (4)
  5.有关的一些推导
  (aEc)^2=(aEc)(aEc)=a^2E2c 
  (aEc)^3=(aEc)(aEc)(aEc)=a^3E3c
  (aEc)^n=a^nEnc
  a×10^logb=ab
  aElogb=ab
  
6.n"E"公式

  3E4E5=30000E5=3E9
  即aEbEc=aEb+c
  6E-3E-6E3=0.006E-6E3
  =0.000000006E3
  =6E-6
  即aEbEcEd=aEb+c+d
  得aEa1Ea2Ea3.......Ean=aEa1+a2+a3+.......+an
  
7.n"E"公式与数列

  据n"E"公式aEa1Ea2Ea3.......Ean=aEa1+a2+a3+.......+an
  得aESn
  等差n项和公式na1+n(n+1)/2×d
  aEna1+n(n+1)/2×d
  等比n项和公式Sn=a1n(q=1)或 n(1-q^n)/1-q 
  aESn [Sn=a1n(q=1)或 n(1-q^n)/1-q(q≠1) ]
  数列通项记数
  等差:aEan=aEa1+(n-1)d
  等比:aEan=aEa1q^n-1
  8.aEb与aE-b
  aEb=a×10^b 
  aEb=a×10^-b 正负b决定E的方向
  科学记数意义
  “aE”表示并非具有科学记数意义,并且aE=a
  “Ea”表示具有科学记数意义,即Ea=1Ea a=3时 1E3=1000
  aEb=c a=c/Eb