我有一个愚蠢的问题。
假设我有一定的双数:
double doubleValue=4.1;
有没有办法将此值显示为4.10
,但不为String,而是为double?
答案 0 :(得分:3)
如果要打印两位小数,请执行以下操作:
double d = 4.10;
DecimalFormat df = new DecimalFormat("#.00");
System.out.print(df.format(d));
这将打印4.10
,数字为双
这是一个完整的工作示例,您可以编译并运行以打印4.10:
import java.text.DecimalFormat;
class twoDecimals {
public static void main(String[] args) {
double d = 4.10;
DecimalFormat df = new DecimalFormat("#.00");
System.out.print(df.format(d));
}
}
即使你设置了
double d = 4.1;
它会打印4.10
。
如果设置double d = 4;
,它将打印4.00,这意味着始终打印两个小数点
答案 1 :(得分:2)
只需这样做,
double doubleValue=4.1;
String.format(Locale.ROOT, "%.2f", doubleValue );
输出:
4.10
使用这种方法,您不需要使用DecimalFormat
,这也会减少不必要的导入
答案 2 :(得分:0)
您无法定义数据类型double
的精度。
如果需要定义十进制数的精度,可以使用类BigDecimal
。
正如javadoc所解释的那样,BigDecimal用于任意精度的带符号十进制数。
这是参考文献
http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html
答案 3 :(得分:0)
我不明白为什么你想要小数点后2位数的双号,0填补空白。你打算在某个地方展示它吗?
答案是,不,你不能
实际上,如果之后没有任何0,你可以设置双精度。
前 -
4.10000 // and you want to set the precision to 2 digits
// it will still give you 4.1 not 4.10
if it is 4.1 // and you want to set precision to 3 digits
// it will still give you 4.1 not 4.100
if it is 4.1234565 // and you want to set precision to 3 digits,
// it will give you 4.123
即使使用String.format格式化它并将其更改回十进制或使用BigDecimal的setScale方法来设置精度, 你不能得到一个以小数后的0结尾的双精度值。
如果要在某处显示某些小数,可以通过转换为String来实现。
这里有两种方法可以做到这一点,(设置精度但不会在最后设置0来填补空白)
1
int numberOfDigitsAfterDecimal = 2;
double yourDoubleResult = 4.1000000000;
Double resultToBeShown = new BigDecimal(yourDoubleResult).setScale(numberOfDigitsAfterDecimal, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(resultToBeShown);
2
double doubleValue=4.1;
double newValue = Double.parseDouble(String.format( "%.2f", doubleValue ));
System.out.println(newValue);
将4.10作为字符串,
double doubleValue=4.1;
String newValue = String.format( "%.2f", doubleValue );
System.out.println(newValue);