Java指定保留小數(shù)位數(shù)的方法
今天項(xiàng)目中需要更改時(shí)長的顯示方式,規(guī)定必須保留兩位小數(shù),剛才看簡書的時(shí)候正好看到一個(gè)指定保留小數(shù)位數(shù)的工具類的文章,在此基礎(chǔ)上,做了一點(diǎn)小修改,用起來更加方便了,有需要的朋友盡管擼走
DecimalUtils 類:
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
/**
* Created by Sean on 17/3/10.
*/
public class DecimalUtils {
/**
* 按四舍五入保留指定小數(shù)位數(shù),位數(shù)不夠用0補(bǔ)充
* @param o 格式化前的小數(shù)
* @param newScale 保留小數(shù)位數(shù)
* @return 格式化后的小數(shù)
*/
public static String formatDecimalWithZero(Object o, int newScale) {
return String.format("%." + newScale + "f", o);
}
/**
* 按四舍五入保留指定小數(shù)位數(shù),位數(shù)不夠用0補(bǔ)充
* @param d 格式化前的小數(shù)
* @param newScale 保留小數(shù)位數(shù)
* @return 格式化后的小數(shù)
*/
public static String formatDecimalWithZero(double d, int newScale) {
String pattern = "0.";
for (int i = 0; i < newScale; i++) {
pattern += "0";
}
DecimalFormat df = new DecimalFormat(pattern);
return df.format(d);
}
/**
* 按四舍五入保留指定小數(shù)位數(shù),位數(shù)不夠用0補(bǔ)充
* @param d 格式化前的小數(shù) String形式
* @param newScale 保留小數(shù)位數(shù)
* @return 格式化后的小數(shù)
*/
public static String formatDecimalWithZero(String d, int newScale) {
String pattern = "0.";
for (int i = 0; i < newScale; i++) {
pattern += "0";
}
DecimalFormat df = new DecimalFormat(pattern);
return df.format(Double.valueOf(d));
}
/**
* 按四舍五入保留指定小數(shù)位數(shù),小數(shù)點(diǎn)后僅保留有效位數(shù)
* @param d 格式化前的小數(shù)
* @param newScale 保留小數(shù)位數(shù)
* @return 格式化后的小數(shù)
*/
public static String formatDecimal(double d, int newScale) {
String pattern = "#.";
for (int i = 0; i < newScale; i++) {
pattern += "#";
}
DecimalFormat df = new DecimalFormat(pattern);
return df.format(d);
}
/**
* 按四舍五入保留指定小數(shù)位數(shù),小數(shù)點(diǎn)后僅保留有效位數(shù)
* @param d 格式化前的小數(shù)
* @param newScale 保留小數(shù)位數(shù)
* @return 格式化后的小數(shù)
*/
public static String formatDecimal(String d, int newScale) {
String pattern = "#.";
for (int i = 0; i < newScale; i++) {
pattern += "#";
}
DecimalFormat df = new DecimalFormat(pattern);
return df.format(Double.valueOf(d));
}
/**
* 按指定舍入模式保留指定小數(shù)位數(shù)
* @param d 格式化前的小數(shù)
* @param newScale 保留小數(shù)位數(shù)
* @param roundingMode 舍入模式
* (RoundingMode.UP始終進(jìn)一/DOWN直接舍棄/
* CEILING正進(jìn)負(fù)舍/FLOOR正舍負(fù)進(jìn)/
* HALF_UP四舍五入/HALF_DOWN五舍六進(jìn)/
* HALF_EVEN銀行家舍入法/UNNECESSARY拋出異常)
* @return 格式化后的小數(shù)
*/
public static double formatDecimal(double d, int newScale, RoundingMode roundingMode) {
BigDecimal bd = new BigDecimal(d).setScale(newScale, roundingMode);
return bd.doubleValue();
}
/**
* 按指定舍入模式保留指定小數(shù)位數(shù)
* @param d 格式化前的小數(shù)
* @param newScale 保留小數(shù)位數(shù)
* @param roundingMode 舍入模式
* (RoundingMode.UP始終進(jìn)一/DOWN直接舍棄/
* CEILING正進(jìn)負(fù)舍/FLOOR正舍負(fù)進(jìn)/
* HALF_UP四舍五入/HALF_DOWN五舍六進(jìn)/
* HALF_EVEN銀行家舍入法/UNNECESSARY拋出異常)
* @return 格式化后的小數(shù)
*/
public static double formatDecimal(String d, int newScale, RoundingMode roundingMode) {
BigDecimal bd = new BigDecimal(Double.valueOf(d)).setScale(newScale, roundingMode);
return bd.doubleValue();
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatisPlus+SpringBoot實(shí)現(xiàn)樂觀鎖功能詳細(xì)流程
樂觀鎖是針對一些特定問題的解決方案,主要解決丟失更新問題,下面這篇文章主要給大家介紹了關(guān)于MyBatisPlus+SpringBoot實(shí)現(xiàn)樂觀鎖功能的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-03-03
java中使用雪花算法(Snowflake)為分布式系統(tǒng)生成全局唯一ID代碼示例
Java雪花算法是一種用于生成唯一ID的算法,它可以在分布式系統(tǒng)中生成全局唯一的ID,這篇文章主要給大家介紹了關(guān)于java中使用雪花算法(Snowflake)為分布式系統(tǒng)生成全局唯一ID的相關(guān)資料,需要的朋友可以參考下2024-07-07
分析Spring框架之設(shè)計(jì)與實(shí)現(xiàn)資源加載器
Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合性角度而言,絕大部分Java應(yīng)用都可以從Spring中受益。今天來分析它的設(shè)計(jì)與實(shí)現(xiàn)資源加載器,從Spring.xml解析和注冊Bean對象2021-06-06
Java系統(tǒng)變量參數(shù)獲取設(shè)置System.getProperties()的方法
這篇文章主要介紹了Java系統(tǒng)變量參數(shù)System.getProperties()獲取設(shè)置方法,文末給大家提到了Systm.getenv()與System.getProperties()區(qū)別,需要的朋友可以參考下2022-01-01
SpringBoot實(shí)現(xiàn)接口冪等性的4種方案
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)接口冪等性的4種方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

