當前位置:首頁 » 編程語言 » java精度

java精度

發布時間: 2022-02-02 14:02:32

java計算精度

在java計算中,int/int得到的是一個int,也就是說,3/7得到的結果是一個int(小數部分全部去掉),故而3/7=0。。
後面的自己分析吧。。
如果你想3/7得到一個float或者double,就應該使用3.0/7或者3/7.0或者3.0/7.0
當然,double t=3;t/7也可以。。

❷ java怎麼控制數字精度輸出

public static void main(String[] args){

//double 型數據的小數點控制輸出
double a=1113.141592653;
DecimalFormat formatter1=new DecimalFormat("#.000000");
System.out.println(formatter1.format(a));

//BigDecimal型數據的小數點控制輸出
String b="1113.141592653";
//方法1
BigDecimal bd1=new BigDecimal(b);
DecimalFormat formatter2=new DecimalFormat("#.000000");
System.out.println(formatter2.format(bd1.doubleValue()));

//方法2, BigDecimal中的setScale方法的第一個參數就
//是我們要指定的精度位數,這里我設為6位小數,但記住,如果
//舍入後的結果後面幾位小數是0,則會被省略,就是說0沒被輸出,詳見後面的測試
BigDecimal bd2=new BigDecimal(b);
System.out.println(bd2.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
//測試
System.out.println();
System.out.println("以下為測試:");
BigDecimal b0=new BigDecimal("1.00000000");
System.out.println(b0.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b1=new BigDecimal("1.00000010");
System.out.println(b1.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b2=new BigDecimal("1.00000020");
System.out.println(b2.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b3=new BigDecimal("1.00000030");
System.out.println(b3.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b4=new BigDecimal("1.00000040");
System.out.println(b4.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b5=new BigDecimal("1.00000050");
System.out.println(b5.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b6=new BigDecimal("1.00000060");
System.out.println(b6.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b7=new BigDecimal("1.00000070");
System.out.println(b7.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b8=new BigDecimal("1.00000080");
System.out.println(b8.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());
BigDecimal b9=new BigDecimal("1.00000090");
System.out.println(b9.setScale(6,BigDecimal.ROUND_HALF_UP).doubleValue());

/*輸出結果如下:

1113.141593
1113.141593
1113.141593

以下為測試:
1.0
1.0
1.0
1.0
1.0
1.000001
1.000001
1.000001
1.000001
1.000001

*/

}

❸ 怎麼控制精度在java

JAVA中如何對double或者float的浮點數進行精度計算,在JAVA中提供了多種參數來實現精度的不同控制方式。具體例子如下:
轉自http://stephen830.iteye.com/blog/260776

Java代碼
/*
*Createdon2005-6-5
*Authorstephen
*
*CopyRight(C)2005-2008,Allrightsreserved.
*/
packagecom.soft4j.utility;

importjava.math.BigDecimal;

/**
*與小數位精度(四捨五入等)相關的一些常用工具方法.
*
*float/double的精度取值方式分為以下幾種:<br>
*java.math.BigDecimal.ROUND_UP<br>
*java.math.BigDecimal.ROUND_DOWN<br>
*java.math.BigDecimal.ROUND_CEILING<br>
*java.math.BigDecimal.ROUND_FLOOR<br>
*java.math.BigDecimal.ROUND_HALF_UP<br>
*java.math.BigDecimal.ROUND_HALF_DOWN<br>
*java.math.BigDecimal.ROUND_HALF_EVEN<br>
*
*@authorstephen
*@version1.0.0
*/
publicfinalclassRoundTool{

/**
*對double數據進行取精度.
*<p>
*Forexample:<br>
*doublevalue=100.345678;<br>
*doubleret=round(value,4,BigDecimal.ROUND_HALF_UP);<br>
*ret為100.3457<br>
*
*@paramvalue
*double數據.
*@paramscale
*精度位數(保留的小數位數).
*@paramroundingMode
*精度取值方式.
*@return精度計算後的數據.
*/
publicstaticdoubleround(doublevalue,intscale,introundingMode){
BigDecimalbd=newBigDecimal(value);
bd=bd.setScale(scale,roundingMode);
doubled=bd.doubleValue();
bd=null;
returnd;
}

/**
*測試用的main方法.
*
*@paramargc
*運行參數.
*/
publicstaticvoidmain(String[]argc){
//下面都以保留2位小數為例

//ROUND_UP
//只要第2位後面存在大於0的小數,則第2位就+1
System.out.println(round(12.3401,2,BigDecimal.ROUND_UP));//12.35
System.out.println(round(-12.3401,2,BigDecimal.ROUND_UP));//-12.35
//ROUND_DOWN
//與ROUND_UP相反
//直接舍棄第2位後面的所有小數
System.out.println(round(12.349,2,BigDecimal.ROUND_DOWN));//12.34
System.out.println(round(-12.349,2,BigDecimal.ROUND_DOWN));//-12.34
//ROUND_CEILING
//如果數字>0則和ROUND_UP作用一樣
//如果數字<0則和ROUND_DOWN作用一樣
System.out.println(round(12.3401,2,BigDecimal.ROUND_CEILING));//12.35
System.out.println(round(-12.349,2,BigDecimal.ROUND_CEILING));//-12.34
//ROUND_FLOOR
//如果數字>0則和ROUND_DOWN作用一樣
//如果數字<0則和ROUND_UP作用一樣
System.out.println(round(12.349,2,BigDecimal.ROUND_FLOOR));//12.34
System.out.println(round(-12.3401,2,BigDecimal.ROUND_FLOOR));//-12.35
//ROUND_HALF_UP[這種方法最常用]
//如果第3位數字>=5,則第2位數字+1
//備注:只看第3位數字的值,不會考慮第3位之後的小數的
System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_UP));//12.35
System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_UP));//12.34
System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_UP));//-12.35
System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_UP));//-12.34
//ROUND_HALF_DOWN
//如果第3位數字>=5,則做ROUND_UP
//如果第3位數字<5,則做ROUND_DOWN
System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_DOWN));//12.35
System.out.println(round(12.3449,2,BigDecimal.ROUND_HALF_DOWN));//12.34
System.out.println(round(-12.345,2,BigDecimal.ROUND_HALF_DOWN));//-12.35
System.out.println(round(-12.3449,2,BigDecimal.ROUND_HALF_DOWN));//-12.34
//ROUND_HALF_EVEN
//如果第3位是偶數,則做ROUND_HALF_DOWN
//如果第3位是奇數,則做ROUND_HALF_UP
System.out.println(round(12.346,2,BigDecimal.ROUND_HALF_EVEN));//12.35
System.out.println(round(12.345,2,BigDecimal.ROUND_HALF_EVEN));//12.35
}
}

如果要求精確控制位數,推薦使用BigDecimal,這是在JDK1.4版本之後推薦的一個處理精度的類。

❹ 在java 中怎麼理解高精度和低精度

高精度和低精度 就是針對小數位數 來說的,

高精度 存儲和保留的小數位數多,經度就高。
低經度 存儲和保留的小數位數相比高精度少 ,經度低。

❺ java中的精度是什麼意思

精度是指的各種數據類型的佔多少位
byte 8 位
short 16 位
int 32 位
long 64 位
float 32 位
double 64 位
char 16 位
希望能幫到你。

❻ java中的精度問題

你申明是,b為byte,y為byte,在參與計算的過程中先會將其轉換為int計算,然後再進行賦值給b,
等號的右邊是int型,左邊為byte型,大類型賦值給小類型需要強制轉換可以寫成b = (byte)(b+y);你也可以寫成b += y;希望對你有幫助~

❼ Java Math精度處理

可以理解為
tan A=tan(A-π)
我們看1.6-(-1.5415926535897932)=3.1415926535897932 就是π

❽ java中的精度是什麼意思啊

不用特別糾結這個東西。
打個比方吧,
你double類型的一個數3.1415926,轉成int類型,那麼就只會剩下3
而之前後面的那些小數,則會取出掉,這就叫丟失精度

❾ Java精度損失

float 單精度浮點數在機內佔4個位元組,用32位二進制描述。
double 雙精度浮點數在機內佔8個位元組,用64位二進制描述。

你將一個范圍大的值 賦給 范圍小的值,自然會有精度損失

❿ java中整數型的精度是幾位

都是用二進制存的,整形的就是沒有二進制小數,只保留整數位,你兌換成二進制就清楚了;
數據在機器的存儲中有兩種方式定點型和浮點型,看每個機器的設定 。而且是以二進制形式存儲,比如浮點型以階符,階碼;符號位,小數位;具體可以參考計算機組成原理的前兩章。通俗解釋就是把二進制轉換成小數*2的n次方,n就是階碼,小數就是後邊的。

熱點內容
腳本注入到其他軟體運行 發布:2024-03-28 18:30:02 瀏覽:720
網易我的世界皮膚能用到伺服器嗎 發布:2024-03-28 18:24:44 瀏覽:804
access資料庫數據類型 發布:2024-03-28 18:16:04 瀏覽:301
安卓界面如何變成蘋果手機界面 發布:2024-03-28 18:07:17 瀏覽:742
方舟手游如何卡安卓大廳會員 發布:2024-03-28 17:52:37 瀏覽:241
空域銳化演算法 發布:2024-03-28 17:52:32 瀏覽:500
虎牙安卓版是什麼意思 發布:2024-03-28 17:43:10 瀏覽:861
電腦改成雲伺服器 發布:2024-03-28 17:37:50 瀏覽:266
文件夾審計 發布:2024-03-28 17:08:20 瀏覽:242
密碼反編譯是什麼意思 發布:2024-03-28 17:02:54 瀏覽:310