Java四舍五⼊时保留指定⼩数位数的五种⽅式⽅式⼀:
double f = 3.1516;
BigDecimal b = new BigDecimal(f);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
输出结果f1为 3.15;
源码解读:
public BigDecimal setScale(int newScale, int roundingMode) //int newScale 为⼩数点后保留的位数, int roundingMode 为变量进⾏取舍的⽅式;
BigDecimal.ROUND_HALF_UP 属性含义为为四舍五⼊
⽅式⼆:
String format = new DecimalFormat("#.0000").format(3.1415926);
System.out.println(format);
输出结果为 3.1416
解读:
#.00 表⽰两位⼩数 #.0000四位⼩数以此类推…
⽅式三:
double num = 3.1415926;
String result = String.format("%.4f", num);
System.out.println(result);
输出结果为:3.1416
解读:
%.2f 中 %. 表⽰⼩数点前任意位数 2 表⽰两位⼩数格式后的结果为f 表⽰浮点型。
⽅式四:
double num = und(5.2544555 * 100) * 0.01d;
System.out.println(num);
输出结果为:5.25
解读:
最后乘积的0.01d表⽰⼩数点后保留的位数(四舍五⼊),0.0001 为⼩数点后保留4位,以此类推......
⽅式五:
1. 功能
将程序中的double值精确到⼩数点后两位。可以四舍五⼊,也可以直接截断。
⽐如:输⼊12345.6789,输出可以是12345.68也可以是12345.67。⾄于是否需要四舍五⼊,可以通过参数来决定(RoundingMode.UP/RoundingMode.DOWN等参数)。
2. 实现代码
package com.clzhang.sample;
import java.math.BigDecimal;
import java.math.RoundingMode;
DecimalFormat;
NumberFormat;
public class DoubleTest {
/** 保留两位⼩数,四舍五⼊的⼀个⽼⼟的⽅法 */
public static double formatDouble1(double d) {
return (und(d*100)/100;
}
public static double formatDouble2(double d) {
// 旧⽅法,已经不再推荐使⽤
/
/ BigDecimal bg = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP);
// 新⽅法,如果不需要四舍五⼊,可以使⽤RoundingMode.DOWN
BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);
return bg.doubleValue();
}
public static String formatDouble3(double d) {
NumberFormat nf = NumberInstance();
// 保留两位⼩数
nf.setMaximumFractionDigits(2);
// 如果不需要四舍五⼊,可以使⽤RoundingMode.DOWN
nf.setRoundingMode(RoundingMode.UP);
return nf.format(d);
}
/**这个⽅法挺简单的 */
bigdecimal格式化两位小数public static String formatDouble4(double d) {
DecimalFormat df = new DecimalFormat("#.00");
return df.format(d);
}
/**如果只是⽤于程序中的格式化数值然后输出,那么这个⽅法还是挺⽅便的, 应该是这样使⽤:System.out.println(String.format("%.2f", d));*/
public static String formatDouble5(double d) {
return String.format("%.2f", d);
}
public static void main(String[] args) {
double d = 12345.67890;
System.out.println(formatDouble1(d));
System.out.println(formatDouble2(d));
System.out.println(formatDouble3(d));
System.out.println(formatDouble4(d));
System.out.println(formatDouble5(d));
}
}
3. 输出
12345.68
12345.68
12,345.68
12345.68
12345.68
以上就是Java四舍五⼊时保留指定⼩数位数的五种⽅式的详细内容,更多关于Java四舍五⼊时保留指定⼩数位数的资料请关注其它相关⽂章!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论