我想格式化以下值,如下所述:
双d = 1234 结果应为1,234
双d = 1234.0 结果应为1,234
双d = 1234.5 结果应该是1,234.50
我试过这个方法
NumberFormat nf = new DecimalFormat("#,##.##");
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(d1));
但是当值为1234或1234 .0时,它不起作用。
答案 0 :(得分:3)
这种事情对于一个格式化程序来说很痛苦。考虑使用
if (d1 % 1.0 == 0.0/*yeah, this ain't quick, but then neither is I/O*/){
// I'm a whole number, floating point modulus is valid in Java.
// And this is a remarkably good way of testing if a floating
// point value is a whole number.
// Format to 0 decimal places.
} else {
// Format to 2 decimal places.
}
答案 1 :(得分:1)
试试这个
NumberFormat nf = new DecimalFormat("#,##.##");
System.out.println(nf.format(d1));
if(d-(int)d==0){
System.out.println(d);
}
else{
System.out.println(nf.format(d));
}
答案 2 :(得分:1)
我喜欢Bathsheba的解决方案,但是如果你想让1234.001也被视为1234:
jQuery(document).ready(function($){
var offset = 300;
var speed = 250;
var duration = 500;
$(window).scroll(function(){
if ($(this).scrollTop() < offset) {
$('.topbutton') .fadeOut(duration);
} else {
$('.topbutton') .fadeIn(duration);
}
});
$('.topbutton').on('click', function(){
$('html, body').animate({scrollTop:0}, speed);
return false;
});
});
答案 3 :(得分:0)
System.out.printf("%.0f",34.0f);
答案 4 :(得分:0)
您可以检查不同的条件并相应地定义格式
double d = 1234.5;
String inp[] = Double.toString(d).split("\\.");
if((inp.length ==1 &&(inp[1] =="0" )) || inp.length ==0){
NumberFormat nf = new DecimalFormat("#,###");
System.out.println(nf.format(d));
}else {
NumberFormat nf = new DecimalFormat("#,###.##");
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
System.out.println(nf.format(d));
}