我无法在网上找到我的问题的答案,这就是我在这里的原因。
我想在java中打印一个具有指定位数数字的数字:
Length = 10
1.123456789 ==> 1.123456789
123.123456789 ==> 123.1234567
123456.123456789 ==> 123456.1234
答案 0 :(得分:2)
您似乎需要从数字的n
表示中获取第一个String
数字。但是,小数分隔符不应计为数字:
String printNumber(double number, int n) {
String value = String.valueOf(number);
String result = "";
int count = 0;
for (char c : value.toCharArray()) {
if (count == n) break;
if (c != '.') {
count++;
}
result += c;
}
return result;
}
答案 1 :(得分:1)
你可以试试这个:
Double number = 1.123456789;
BigDecimal bigDecimal = new BigDecimal(number).setScale(6, RoundingMode.HALF_EVEN);
System.out.println("double value: " + bigDecimal.doubleValue());
在setScale
方法中,您可以选择点后的位数。
答案 2 :(得分:0)
那么,您可以根据非十进制数的长度来计算金额:
public String doubleToString(double in) {
int length = (((int) in) + "").length(); //non-decimal length
if (length <= 0 || length > 10) {
//error out? not sure how you wish to handle 11-digit numbers
}
return String.format("%." + (10 - length) + "f", in); //format decimal
}
缩短:
//default to 0 decimals for >10 digits
public String doubleToString(double in) {
return String.format("%." + Math.max(0, (10 - (((int) in) + "").length()) + "f", in);
}
答案 3 :(得分:0)
将数字保存为字符串并将子字符串从0到10.现在您可以将其解析回来并获得10位数字