A. java String轉float後值不對,字元串134886.07通過Float.parseFloat(134886.07)轉換後的值為134886.06
您好,提問者:
因為float是單精度,精確不是很准,建議轉換為double類型。
PS:8個基本類型中 兩個浮點數,默認的是double,推薦使用double。
B. java中如何把一個String類型的變數轉換成double型的
java中把String類型的變抄量轉換成double類型變數的方法:
對於數值的字元串"12345",將其轉化成數字12345做法如下:
String s="12345";
double d;
d=Double.parseDouble(s);
轉化完成。
擴展內容:
(1)在Java中有8種數據類型來存儲數值、字元和布爾值。
(2)整數型用來存儲整數數值,即沒有小數部分的數值。可以是正數,也可以是負數。整數數據在Java程序中有3種表示形式,分別為十進制、八進制和十六進制。
(3)整型數據類型有:byte、short、int、long
(4)布爾型數據類型有:true、false
C. java字元串轉換為整型的問題
Integer.paresInt()是將字元串轉換為整數,1.25轉化時裡面有「.」不是整數啊。所以會拋出異常。
Double.Double.parseDouble():將字元串轉化為浮點數。
D. java如何將 byte [4] 轉換到float
推薦答案是錯誤地把位元組等同與字元。
byte b[]={0x41,(byte) 0xc8,0,0};
//方法1 流輸入,適用於ME/SE環境
//默認大端數內,如果小端數,可以先翻容轉數組
DataInputStream dis=new DataInputStream(new ByteArrayInputStream(b));
float f=dis.readFloat();
dis.close();
System.out.println(f);
//方法2 緩存輸入,適用於SE/EE環境
ByteBuffer buf=ByteBuffer.allocateDirect(4); //無額外內存的直接緩存
//buf=buf.order(ByteOrder.LITTLE_ENDIAN);//默認大端,小端用這行
buf.put(b);
buf.rewind();
float f2=buf.getFloat();
System.out.println(f2);
都將顯示讀出來的浮點數25.0
E. [java] string類型轉為double
精度的問題!用基本類型的double類型進行運算可能會丟失精度。而且特別大的數又沒法處理。所以如果用BigDecimal這個類問題就解決了。這個類在java.Math包下。它可以處理任意精度的數據。對於樓主出現的問題,我從新寫了段代碼,供樓主參考。但是主要是還得查看API!代碼如下:
importjava.math.*;
publicclassoopp
{
publicstaticvoidmain(String[]args)
{
Stringa="1467000000";
doubleaa=Double.parseDouble(a);
BigDecimalbeichushu=newBigDecimal(aa);
BigDecimalchushu=newBigDecimal(100000000);
BigDecimalresult=beichushu.divide(chushu,newMathContext(4));//MathConText(4)表示結果精確4位!
booleanisTrue=String.valueOf(result).equals("14.67");
System.out.println("1467000000除以100000000="+result);
System.out.println(result+"與14.67比較的結果是"+isTrue);
}
}