導航:首頁 > 編程語言 > java精確計算

java精確計算

發布時間:2022-10-30 14:09:48

A. 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
}
}

B. JAVA中"math.hypot"有什麼功能

math.hypot主要用於java的精確計算。一般的java方法計算出來的值會存在很小的誤差。因為他是基於二進制而不是十進制。1/5 和 7/50 之類的分數可用十進制精確表示(分別是 0.2 和 0.14),但用二進製表示時,就會出現重復的分數。所以需要一個特定的方法來計算
,至於具體用法可以網路下math.hypot主要用法,相信能看懂,不過這個東西用的不多..

C. 用Java精確計算0.01與0.05的和並將結果輸出到所有文件中

用double類型就可以吧,比如double num1=0.01 ;double 2=0.05 ; double he=num1+num2;System.out.println(he);

D. 請問:在Java語言中如何把一個浮點數精確到小數點後的某幾位

--Math.round()
(double)(Math.round(sd3*10000)/10000.0);

這樣為保持4位

(double)(Math.round(sd3*100)/100.0);

這樣為保持2位.
--BigDecimal
//保留小數點後兩位小數
publicdoubleNumber2(doublepDouble)
{
BigDecimalbd=newBigDecimal(pDouble);
BigDecimalbd1=bd.setScale(2,bd.ROUND_HALF_UP);
pDouble=bd1.doubleValue();
longll=Double.doubleToLongBits(pDouble);

returnpDouble;
}
格式化輸出數字
--NumberFormat
--java.text包中的一些包可以處理這類問題。下面的簡單範例使用那些類解決上面提出的問題:
importjava.text.NumberFormat;
importjava.util.Locale;
publicclassDecimalFormat1{
publicstaticvoidmain(Stringargs[]){
//得到本地的預設格式
NumberFormatnf1=NumberFormat.getInstance();
System.out.println(nf1.format(1234.56));
//得到德國的格式
NumberFormatnf2=
NumberFormat.getInstance(Locale.GERMAN);
System.out.println(nf2.format(1234.56));
}
}
--DecimalFormat
importjava.text.DecimalFormat;
importjava.util.Locale;
publicclassDecimalFormat2{
publicstaticvoidmain(Stringargs[]){
//得到本地的預設格式
DecimalFormatdf1=newDecimalFormat("####.000");
System.out.println(df1.format(1234.56));
//得到德國的格式
Locale.setDefault(Locale.GERMAN);
DecimalFormatdf2=newDecimalFormat("####.000");
System.out.println(df2.format(1234.56));
}
}

E. Java里1.4/7=0.199998

小數在計算機中的存儲是用2的負數次方表示的因此,十進制中的有限位數的小數在二進制時卻是無限小數,比如0.1用就是一個無限循環的0.0001100110011001100。。。小數,實際存儲中是不可能存放無限位數的因此就會產生舍入,產生誤差。此外除法運算的演算法也存在一定精度下舍入誤差,因此最終看到的結果就是一個接近結果的小數近似值

F. java能精確到小數點的後多少位

java中double類型是雙精度浮點數,佔用8位元組(Byte)即64位(bit),其精度是由32個bit的二進制尾數來確定的,因此准確精度是二進制精度而不是十進制精度,通常可以保證十進制小數點後15位有效精度和第16位的部分精度。其實這個不只是java存在,是由計算機二級制架構決定的。高精度浮點計算,最好是先轉換為整數計算後再轉為小數。相對精度比較好。

G. 如何用java計算兩個時間差,要精確到小時,比如2012-3-12 10:43:32 和 2012-3-12 11:00:00 相差0.幾小時

代碼:
public static void main(String[] args) throws Exception {
String date1 = "2012-3-12 10:43:32";
String date2 = "2012-3-12 11:00:00";
System.out.println("相差" + jisuan(date1, date2) + "小時");
}

public static double jisuan(String date1, String date2) throws Exception {
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-M-d HH:mm:ss");
java.util.Date start = sdf.parse(date1);
java.util.Date end = sdf.parse(date2);
long cha = end.getTime() - start.getTime();
double result = cha * 1.0 / (1000 * 60 * 60);
return result;
}

運行結果:
相差0.27444444444444444小時

H. JAVA怎麼計算百分比

int num1 = 7;

int num2 = 9;

// 創建一個數值格式化對象

NumberFormat numberFormat = NumberFormat.getInstance();

// 設置精確到小數點後2位

public String getPercent(int x,int total){

String result="";//接受百分比的值

double x_double=x*1.0;

double tempresult=x/total;

numberFormat.setMaximumFractionDigits(2);

String result = numberFormat.format((float) num1 / (float) num2 * 100);

System.out.println("num1和num2的百分比為:" + result + "%");

比較運算符

比較運算符屬於二元運算符,用於程序中的變數之間,變數和自變數之間以及其他類型的信息之間的比較。比較運算符的運算結果是boolean型。當運算符對應的關系成立時,運算的結果為true,否則為false。比較運算符共有6個,通常作為判斷的依據用於條件語句中。

Java解釋器在沒有生成任何對象的情況下,以main作為入口來執行程序。每個類中可以定義多個方法,但main方法只能有一個。關鍵字public表示訪問許可權,指明所有的類都可以使用這一方法。

以上內容參考:網路-Java

I. java如何進行精確運算

importjava.math.BigDecimal;publicclassArith{//默認除法運算精度privatestaticfinalintDEF_DIV_SCALE=10;//這個類不能實例化privateArith(){;}/***提供精確的加法運算。*@paramv1被加數*@paramv2加數*@return 兩個參數的和*/publicstaticdoubleadd(doublev1, doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2));returnb1.add(b2).doubleValue();}/***提供精確的減法運算。*@paramv1被減數*@paramv2減數*@return 兩個參數的差*/publicstaticdoublesub(doublev1, doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2));returnb1.subtract(b2).doubleValue();}/***提供精確的乘法運算。*@paramv1被乘數*@paramv2乘數*@return 兩個參數的積*/publicstaticdoublemul(doublev1, doublev2){ BigDecimalb1=newBigDecimal(Double.toString(v1)); BigDecimalb2=newBigDecimal(Double.toString(v2));returnb1.multiply(b2).doubleValue();}/***提供(相對)精確的除法運算,當發生除不盡的情況時,精確到*小數點以後10位,以後的數字四捨五入。*@paramv1被除數*@paramv2除數*@return 兩個參數的商*/publicstaticdoublediv(doublev1, doublev2){returndiv(v1,v2,DEF_DIV_SCALE);}/***提供(相對)精確的除法運算。當發生除不盡的情況時,由scale參數指*定精度,以後的數字四捨五入。

閱讀全文

與java精確計算相關的資料

熱點內容
QQ聊天記錄journal文件夾 瀏覽:118
蘋果公司雲伺服器地址 瀏覽:85
加密記事本手機 瀏覽:437
汽車壓縮機變頻閥 瀏覽:95
域外伺服器是什麼意思 瀏覽:639
大眾點評伺服器怎麼老卡頓 瀏覽:556
javavector與list的區別 瀏覽:316
java初始化類數組 瀏覽:303
java字元串轉換成json對象 瀏覽:647
android非阻塞socket 瀏覽:358
編譯系統概念 瀏覽:452
天眼通app能做什麼 瀏覽:557
魅族手機怎麼加密圖庫 瀏覽:8
rpa編譯器 瀏覽:572
車載雲伺服器記錄 瀏覽:740
四川金星壓縮機製造有限公司 瀏覽:55
移動平台圖片壓縮演算法 瀏覽:37
銀行項目java 瀏覽:571
怎樣將pdf轉換為ppt 瀏覽:598
純凈伺服器怎麼開服 瀏覽:288