javadouble的精度
❶ java中double型如何控制有效數字輸出位數或精度
//方法一
NumberFormat nFormat=NumberFormat.getNumberInstance();
nFormat.setMaximumFractionDigits(2);//設置小數點後面位數為悄察
System.out.println(nFormat.format(3.1415););
方法二
double d = 14.7155;
DecimalFormat df0 = new DecimalFormat("###");
DecimalFormat df1 = new DecimalFormat("###.0"態運李帆遲);
DecimalFormat df2 = new DecimalFormat("###.00");
System.out.println(df0.format(d));
System.out.println(df1.format(d));
System.out.println(df2.format(d));
double test = Math.round(d);
System.out.println(test);
❷ java double型數據精確值問題
java中double類型數據是用64位來表示的,精度肯定是有限的,在需要更高精度的運算過程中,有兩種方法可供參考:1. 自己用超過64位來盯耐表示一個double類型,比如用100個byte[]來表示一個double(800bytes);這樣的話,double的加減乘春輪除就需要自己實現一遍了。很多IT公司有這樣的面試題。2. 用java自帶的BigDecimal類可以方便做高精度的運算。(c++中是沒有BigDecimal這種方面的類的,所以只能用第扒則信一種方法)
❸ 請問java中,Double類型和double有什麼不同能否轉換
Double是類double是基礎數據類型。Double類型是double的包裝類,在JDK1.5以後,二者可以直接相互賦值,稱為自動拆箱和自動裝箱。如果是這樣,可以用Double中的方法,將包裝類轉為基本數據類型。
可以轉換的。
❹ java中double類數組要怎樣才能精確到有幾位小數點
java中double類型是雙精度浮空鉛拆點數,佔用8位元組(Byte)即64位(bit),其精度是由32個bit的二進制尾數來確定的,因此准確精度是二進制精度而不是十進制精度,通常可以保證十進制小數點後15位有效精度和第16位的部分精度。其實這個不只是java存在,是由計算機二級制架構決定的。高激敗精度浮點計算,最好是先轉換為整數計算斗棗後再轉為小數。相對精度比較好。
❺ java double和float的區別
1、內存結構
float和double的范圍是由指數的位數來決定的。
float的指數位有8位,而double的指數位有11位,分布如下:
float:
1bit(符號位)
8bits(指數位)
23bits(尾數位)
double:
1bit(符號位)
11bits(指數位)
52bits(尾數位)
於是,float的指數范圍為-128~+127,而double的指數范圍為-1024~+1023,並且指數位是按補碼的形式來劃分的。
其中負指數決定了浮點數所能表達的絕對值最小的非零數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值范圍。
float的范圍為-2^128
~
+2^127,也即-3.40e+38
~
+3.40e+38;double的范圍為-2^1024
~
+2^1023,也即-1.79e+308
~
+1.79e+308。
2.
精度
float和double的精度是由尾數的位數來決定的。浮點數在內存中是按科學計數法來存儲的,其整數部分始終是一個隱含著的「1」,由於它是不變的,故不能對精度造成影響。
float:2^23
=
8388608,一共七位,由於最左為1的一位省略了,這意味著最多能表示8位數:
2*8388608
=
16777216
。有8位有效數字,但絕對能保證的為7位,也即
float的精度為7~8位有效數字
double:2^52
=
4503599627370496,一共16位,同理,
double的精度為16~17位
之所以不能用f1==f2來判斷兩個數相等,是因為雖然f1和f2在可能是兩個不同的數字,但是受到浮點數表示精度的限制,有可能會錯誤的判斷兩個數相等!
❻ Java中的單雙精度數據類型分別占幾個位元組
Java中的單雙精度數據類型分別占幾個位元組?
這個挺好記的:
byte: 1Byte
char,short: 2Byte
int,float: 4Byte
long,double: 8Byte
另外關於單位的換算:
1Byte = 8 bit
1K=1024Byte
1M=1024K
1G=1024M
1T=1000G
希望能幫到你啊。
VB中的類型DOUBLE表示雙精度浮,點數存儲為幾個位元組
Double 數據類型
Double(雙精度浮點型)變數存儲為 IEEE 64 位(8 個位元組)浮點數值的形式,它的范圍在負數的時候是從 -1.79769313486232E308 到 -4.94065645841247E-324,而正數的時候是從 4.94065645841247E-324 到 1.79769313486232E308。Double 的類型聲明字元是數字元號 (#)。
delphi中雙精度數據類型是不是double
single----四位元組的實數類型
double----雙精度的實數類型(8位元組的實數)
extended----10位元組的實數類型
vb 怎麼將數據類型寫成雙精度型
1、因為此數據類型的有效數字是16位,它是單精度實數(有效數字8位)精度的兩倍,故而得名雙精度實型數。
2、詳細如下:
a)、Single 數據類型
Single(單精度浮點型)變數存儲為 IEEE 32 位(4 個位元組)浮點數值的形式,它的范圍在負數的時候是從 -3.402823E38 到 -1.401298E-45,而在正數的時候是從 1.401298E-45 到 3.402823E38。
b)、Double 數據類型
Double(雙精度浮點型)變數存儲為 IEEE 64 位(8 個位元組)浮點數值的形式,它的范圍在負數的時候是從 -1.79769313486232E308 到 -4.94065645841247E-324,而正數的時候是從 4.94065645841247E-324 到 1.79769313486232E308。
計算機數據類型中單精度類型與雙精度的定義與區別?
二者的取值范圍和精度是不同的
float的精度是6位有效數字,取值范圍是10的-38次方到10的38次方,float佔用4位元組空間
double的精度是15位有效數字,取值范圍是10的-308次方到10的308次方,double佔用8位元組空間
java中什麼數據類型佔4個位元組
int, float
一個是整型變數(-2147483648~2147483647),另一個是浮點型(3.40282*10^38~1.17549*10^-38)
c語言數據類型為何是雙精度型
1、雙精度,單精度指浮點型數,
雙精度 叫 double 型, 單精度 float 型。
double 型 用 64位2進制存放,float 型 用 32位2進制存放。
所以,兩種數 的 最大和最小 數值范圍 不同,數的有效數字個數肢肆不同,也就是精度不同。
2、double 型 最大數值 1.7976931348623158e+308
最小正數數值 2.2250738585072014e-308
有效數字 十進制 15 位。
float 型
最大數值 3.402823466e+38F
最小正數數值 1.175494351e-38F
有效數字 十進制 6-7 位。
詳細定義 見編譯器 頭文件 float.h
c#中整數類型數據int占幾個位元組?
int有好幾歷吵轎種:Int16 Int32 Int64
意義同名,分別佔16位,32位,64位
8位一位元組,所以分別佔2位元組,4位元組,8位元組
C#對整數做了基元類型:碰友
short映射Int16
int映射Int32
long映射Int64
int即Int32
即:4位元組
整型數據為什麼占據兩個位元組的內存?單精度實型為什麼占據4個位元組的內存?雙精度為什麼占據8個位元組?
數據類型所佔內存大小取決於實現。Microsoft Visual C++中,int佔4位元組,float佔4位元組, double佔8位元組。
換句話說取決於你的編譯環境。Microsoft Visual C++這樣,可能g就不是這樣了
❼ java中double型如何控制有效數字輸出位數或精度
java中 double 類型只是一個簡單拍閉類型,是不能其輸出位數及精度是固定的x0dx0a可以利用其它方襲旦裂法遲液進行位數輸出,如:x0dx0a x0dx0a public static void main(String[] args) {x0dx0a // 1. 使用 String.format() 方法x0dx0a double data = 11.8982389283293;x0dx0a System.out.println(String.format("%.2f", data));x0dx0a x0dx0a // 2. 使用 printf 輸出x0dx0a System.out.printf("%.2f", data);x0dx0ax0dx0a// 3. 使用 DecimalFormat 對象格式化x0dx0a DecimalFormat format = new DecimalFormat("#.00");x0dx0a System.out.println(format.format(data));x0dx0a }