Java的四種保留小數點方法
阿新 • • 發佈:2019-01-05
1.前言
在java的學習中,往往演算法有一個是屬於java的小數點位數保留。
一般有四種方式,如下:
package java_stu;
/**
* @see java保留小數點示例
*
*/
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class java_01 {
double f = 123456.7890;
/**
* 1.BigDecimal常用於金額的計算,
* 超過16位使用
*/
public void m1() {
BigDecimal bg = new BigDecimal(f);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
}
/**
* 2.DecimalFormat轉換最簡便
* 用於格式化十進位制數字
* 常用
*/
public void m2() {
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));
}
/**
* 3.String.format列印最簡便
* 常用
*/
public void m3() {
System.out.println(String.format("%.2f", f));
}
/**
* 4.NumberFormat
* 是所有數值格式的抽象基類。
*/
public void m4() {
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2 );
System.out.println(nf.format(f));
}
public static void main(String[] args) {
java_01 f = new java_01();
f.m1();
f.m2();
f.m3();
f.m4();
}
}
輸出結果:
自動四捨五入:
123456.79
123456.79
123456.79
123,456.79
Process finished with exit code 0
2.解釋
1.BigDecimal
常用於金額的計算,超過16位使用
Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數進行精確的運算。
雖然雙精度浮點型變數double可以處理16位有效數。在實際應用中,需要對更大或者更小的數進行運算和處理。float和double只能用來做科學計算或者是工程計算,在商業計算中要用java.math.BigDecimal。BigDecimal所建立的是物件,但是不能使用傳統的+、-、*、/等算術運算子直接對其物件進行數學運算,而必須呼叫其相對應的方法。方法中的引數也必須是BigDecimal的物件。
2.DecimalFormat
它是 NumberFormat 的一個具體子類,用於格式化十進位制數字。可以幫你用最快的速度將數字格式化為你需要的樣子。
3.String.format
列印最簡便。
String.format 作為字串格式化,簡單呼叫 String.format(“Hello %s”, “John”);
String.format返回的是String型別的字串。
4.NumberFormat
NumberFormat 是所有數值格式的抽象基類。 該類提供了格式化和分析數值的介面。
以上四種方式,常用的是2,3。
You got a dream, you gotta protect it.
如果你有夢想的話,就要去捍衛它 。 ——《當幸福來敲門》