A. 有關java浮點數精度的問題
1、設置顯示格式
%4.1f
2、
定義為float,則會有6位小數
定義為int,則為89
B. java中如何實現N個浮點數相加並確保其精確度
用BigDecimal類來計算,先用加法計算,再用結果除以1,通過devide除法方法來確認保留幾位小數,如下例:
importjava.math.*;
publicclassDemo
{
publicstaticvoidmain(String[]args){
BigDecimalbig1=newBigDecimal(123456.23456);
BigDecimalbig2=newBigDecimal(123.456);
BigDecimalbig3=newBigDecimal(1);
BigDecimaltemp=big1.add(big2);
System.out.println(big1.divide(big3,5,BigDecimal.ROUND_HALF_UP));//保留5位小數,返回bigDecimal
}
}
C. .....java中,如何讓用戶定義浮點數精度
/**
* 提供精確的小數位四捨五入處理。
* @param v 需要四捨五入的數字
* @param scale 小數點後保留幾位
* @return 四捨五入後的結果
*/
public static double round(double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
D. JAVA 單精度浮點型數據取值范圍
java 代碼
double maxd=Double.MAX_VALUE;//最大值
double mixd=Double.MIN_VALUE;//最小值
System.out.println("雙精度浮點在"+mixd+"到"+maxd+"之間");
float maxf=Float.MAX_VALUE;//最大值
float mixf=Float.MIN_VALUE;//最小值
System.out.println("單精度浮點在"+mixf+"到"+maxf+"之間");
我只能這樣……
輸出結果:
雙精度浮點在4.9E-324到1.7976931348623157E308之間
單精度浮點在1.4E-45到3.4028235E38之間
nE**貌似是指n乘以10的**次方
E. java中「float型浮點數在機器中佔32位,有效精度為6位。」怎麼解釋
有效精度是這樣
比如:
3.14
小數點後面兩位
當然六位的話,就是小數點後面六位了
新年快樂
-----------------
不是.6位以後就不顯示了
他只會顯示到小數點後6位,之後就截掉不顯示了哦
F. JAVA中鍵盤輸入雙精度浮點數
import java.util.Scanner;
public class TestDouble {
public static void main(String []args){
System.out.println("請輸入一個double:");
Scanner in = new Scanner(System.in);
double inNum = in.nextDouble();
System.out.println(inNum);
}
}
G. java中float和double是多少位浮點數
float表示單精度浮點數在機內佔4個位元組,用32位二進制描述。
double表示雙精度浮點數在機內佔8個位元組,用64位二進制描述。
浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分。
數符佔1位二進制,表示數的正負。
指數符佔1位二進制,表示指數的正負。
尾數表示浮點數有效數字,0.xxxxxxx,但不存開頭的0和點
指數存指數的有效數字。
指數佔多少位,尾數佔多少位,由計算機系統決定。
可能是數符加尾數佔24位,指數符加指數佔8位 -- float.
數符加尾數佔48位,指數符加指數佔16位 -- double.
知道了這四部分的佔位,按二進制估計大小范圍,再換算為十進制,就是浮點數的數值范圍。
對編程人員來說,double 和 float 的區別是double精度高,有效數字16位,float精度7位。但double消耗內存是float的兩倍,double的運算速度比float慢得多,java語言中數學函數名稱double 和 float不同,不要寫錯,能用單精度時不要用雙精度(以省內存,加快運算速度)
H. 關於java的浮點型精度問題
出現這種問題很正常,因為在計算機內部,所有的數據都是用二進制數表示的,像十進制數的0.1,如果轉換成二進制數,就會出現精度損失,只有那些1/2^n的數(在n不是很大的時候)才不會產生精度損失
所以輸出a不等於2.4是很正常的
I. 請教一下: java語言中,float (單精度浮點型)和 double(雙精度浮點型), 到底是
二者的取值范圍和精度是不同的
float的精度是6位有效數字,取值范圍是10的-38次方到10的38次方,float佔用4位元組空間
double的精度是15位有效數字,取值范圍是10的-308次方到10的308次方,double佔用8位元組空間