❶ java能精確到小數點的後多少位
java中double類型是雙精度浮點數,佔用8位元組(Byte)即64位(bit),其精度是由32個bit的二進制尾數來確定的,因此准確精度是二進制精度而不是十進制精度,通常可以保證十進制小數點後15位有效精度和第16位的部分精度。其實這個不只是java存在,是由計算機二級制架構決定的。高精度浮點計算,最好是先轉換為整數計算後再轉為小數。相對精度比較好。
❷ JAVA 中的Float類型不是7位有效數字嗎
首先說一下:
范圍是3.4E-38 ——3.4E+38,可提供7位有效數字。
上述這兩個量都是近似值,各個編譯器不太一樣的。
下面我就將標准值是怎麼定義的,和你說一下:
這個比較復雜,建議你找一下IEEE754標准看一下。
這個簡單說一下吧:
在IEEE754標准中進行了單精度浮點數(float)和雙精度數浮點數(double)的定義。float有32bit,double有64bit。它們的構成包括符號位、指數位和尾數位。
這些位的構成如下:
種類-------符號位-------------指數位----------------尾數位----
float---第31位(佔1bit)---第30-23位(佔8bit)----第22-0位(佔23bit)
double--第63位(佔1bit)---第62-52位(佔11bit)---第51-0位(佔52bit)
取值范圍主要看指數部分:
float的指數部分有8bit(2^8),由於是有符號型,所以得到對應的指數范圍-128~128。
double的指數部分有11bit(2^11),由於是有符號型,所以得到對應的指數范圍-1024~1024。
由於float的指數部分對應的指數范圍為-128~128,所以取值范圍為:
-2^128到2^128,約等於-3.4E38 — +3.4E38
精度(有效數字)主要看尾數位:
float的尾數位是23bit,對應7~8位十進制數,所以有效數字有的編譯器是7位,也有的是8位