到目前为止,我需要对我输入的数字进行舍入,并将其设置为3位小数,而不使用这些方法。
if(number !=(int)number){
number*=1000;
number=(int)number;
number=(double)number;
number/=1000;
System.out.println("-"+ number);
}
if(number ==(int)number){
System.out.println("-"+ number + "00");
}
如上所述,除了带有2位小数的输入外,它适用于任何输入,如12.34。 如果我键入12.34并显示12.340?
,如何使其工作答案 0 :(得分:0)
你可以像这样使用printf方法:
System.out.printf("result = %.3f",number);
编辑(不使用printf
格式说明符)
void floatTruncate(float val){
float a = val;
String result = a + "";
int index = result.indexOf(".");
int zeroes = result.length() - 1 - index;
zeroes = 3 - zeroes;
for (int i = 1; i <= zeroes && zeroes < 3; i++) {
result = result + "0";
}
System.out.println("new result = " + result);
}
编辑2:(如果您的输入与number = 22.34567f
类似,并且您希望输出为22.345
,则只需要保留3位小数,然后使用此
/>
void floatTruncate(float val) {
float a = val;
String result = a + "";
int index = result.indexOf(".");
int zeroes = result.length() - 1 - index;
//use this logic if ur logic is to keep only 3 decimal places
if(zeroes>3){
result = result.substring(0, index+4);
}
zeroes = 3 - zeroes;
for (int i = 1; i <= zeroes && zeroes < 3; i++) {
result = result + "0";
}
System.out.println("new result = " + result);
}
示例输出
a = 22.3f -> 22.300
a = 22.34f -> 22.340
a = 22.345f -> 22.345
a = 22.34567f -> 22.345
答案 1 :(得分:0)
尝试这样的事情(截断数字):
number *= 1000.0;
if (((int) number) % 100 == 0) {
System.out.println((number / 1000.0) + "00");
} else if (((int) number) % 10 == 0) {
System.out.println((number / 1000.0) + "0");
} else {
System.out.println(number / 1000.0);
}
答案 2 :(得分:0)
这个怎么样?适用于给定的输入
public static String truncate(Double a, int digits) {
String[] values = a.toString().split("\\.");
String integer = values[0];
String decimal = values[1];
if (decimal.length() < digits) {
int n = digits - decimal.length();
for (int i = 0; i < n; i++) {
decimal += "0";
}
return integer + "." + decimal;
}
return integer + "." + decimal.substring(0, digits);
}
public static void main(String[] args) {
System.out.println(truncate(1.0, 7));
System.out.println(truncate(1.23719273, 4));
System.out.println(truncate(1d, 1));
}
停止
1.0000000
1.2371
1.0