如果值为200.3456,则应该将其格式化为200.34。 如果它是200,那么它应该是200.00。
当前回答
四舍五入通常不是一个人想要的。相反,应该使用String.format()以所需的格式表示它。
其他回答
对于两个四舍五入数字。非常简单,你基本上是更新变量,而不是只是显示的目的,DecimalFormat。
x =数学。地板(x * 100) / 100;
在你的问题中,你似乎也想避免四舍五入的数字?我认为.format()将四舍五入的数字使用一半,afaik? 因此,如果您想四舍五入,200.3456应该是200.35,精度为2。但在你的情况下,如果你只想要前两个,然后放弃剩下的?
您可以将其乘以100,然后转换为int(或取该数字的底),然后再除以100。
200.3456 * 100 = 20034.56;
(int) 20034.56 = 20034;
20034/100.0 = 200.34;
你可能会在边界附近遇到非常非常大的数字。在这种情况下,转换为字符串和子字符串,它将很容易工作。
如果你只是想打印小数点后有两位数字的double,可以使用这样的方法:
double value = 200.3456;
System.out.printf("Value: %.2f", value);
如果你想将结果以String形式显示,而不是输出到控制台,请使用String.format(),并使用相同的参数:
String result = String.format("%.2f", value);
或者使用类DecimalFormat:
DecimalFormat df = new DecimalFormat("####0.00");
System.out.println("Value: " + df.format(value));
我认为这样比较简单:
double time = 200.3456;
DecimalFormat df = new DecimalFormat("#.##");
time = Double.valueOf(df.format(time));
System.out.println(time); // 200.35
请注意,这实际上是为您进行舍入,而不仅仅是格式化。
例如,如果你真的想要相同的双精度,但以你想要的方式四舍五入,你可以使用BigDecimal
new BigDecimal(myValue).setScale(2, RoundingMode.HALF_UP).doubleValue();
推荐文章
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- Mockito.any()传递带有泛型的接口
- 在IntelliJ 10.5中运行测试时,出现“NoSuchMethodError: org.hamcrest. matcher . descripbemismatch”
- 使用String.split()和多个分隔符
- Java数组有最大大小吗?
- 在Android中将字符串转换为Uri
- 从JSON生成Java类?
- 为什么java.util.Set没有get(int index)?
- Swing和AWT的区别是什么?
- 为什么Java流是一次性的?
- 四舍五入BigDecimal *总是*有两位小数点后
- 设计模式:工厂vs工厂方法vs抽象工厂
- Java:检查enum是否包含给定的字符串?
- 它的意思是:序列化类没有声明一个静态的最终serialVersionUID字段?