This question already has answers here:
How to round a number to n decimal places in Java
(31个答案)
How to Round Decimals to 2 Places after the Decimal Point (Java)
(4个答案)
4年前关闭。
我是Java编程的新手。我想将价格四舍五入到小数点后2位。
例如。
我尝试了提供的重复项,但它们仅排到小数点后1位。
例如。
这是我的代码:
我已经研究了本网站专家提供的其他模型答案,但没有一个人能真正回答我的问题。设置为2位小数,我使用的是
这是我国正在使用的舍入系统。可以检出here。
**
该问题已由@Mureinik双重舍入=
Math.round(num * 100.0 / 5.0)* 5.0 / 100.0;
**
您可以引用Javadocs for ROUND_HALF_UP和setScale
(31个答案)
How to Round Decimals to 2 Places after the Decimal Point (Java)
(4个答案)
4年前关闭。
我是Java编程的新手。我想将价格四舍五入到小数点后2位。
例如。
38.80
保持不变。38.81
到38.80
。38.82
到38.80
。38.83
到38.85
。38.84
到38.85
。38.85
保持不变。38.86
到38.85
。38.87
到38.85
。38.88
到38.90
。38.89
到38.90
。38.90
保持不变。我尝试了提供的重复项,但它们仅排到小数点后1位。
例如。
38.82
到38.8
。这是我的代码:
import java.text.DecimalFormat;
public class RoundUp {
public static void main(String[] args){
DecimalFormat df = new DecimalFormat("#.##");
double num = 38.84;
System.out.println(df.format(Math.round(num*10.00)/10.00));
}
}
我已经研究了本网站专家提供的其他模型答案,但没有一个人能真正回答我的问题。设置为2位小数,我使用的是
DemicalFormat
。我知道,但是四舍五入,例如,我真正想要的是38.83至38.85和38.87至38.90。这是我国正在使用的舍入系统。可以检出here。
**
该问题已由@Mureinik双重舍入=
Math.round(num * 100.0 / 5.0)* 5.0 / 100.0;
**
最佳答案
我建议您在处理货币时使用BigDecimal而不是double。
然后就像
BigDecimal value = new BigDecimal(38.84);
value = value.setScale(2, BigDecimal.ROUND_HALF_UP)
您可以引用Javadocs for ROUND_HALF_UP和setScale
关于java - 在Java中舍入价格数字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30635669/
10-12 05:48