删除小数中除前两个数字以外的所有数字
Removing all but the first two numbers in a decimal
我正在尝试制作一个程序,将用户输入的数字转换为百分比。转换后,我想保留小数点后的前两个数字,但不对数字进行四舍五入。例如,输入 1.23456 将得到 123.45.
我的想法是,我可以接受输入,将字符串分成小数点前后,然后创建一个循环,删除最后一位数字,直到它最多保留 2 位小数。我的问题是,每当我创建小数点输出大于 9 的东西时,我都会收到错误消息:线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:开始 0,结束 -1,长度 0,所以我可以暂时只取小数到小数点后的小数点。
我的代码:
import java.util.Scanner;
public class percentage {
public static void main(String[] args) {
try (// TODO Auto-generated method stub
Scanner x = new Scanner(System.in)) {
System.out.println("Please input a number with a decimal to be converted into a percentage: ");
String numberAsString = x.next();
double number = Double.parseDouble(numberAsString);
double percentage = (number * 100);
String toString = Double.toString(percentage);
String[] parts = toString.split("[.]");
String integer = parts[0];
String decimal = parts[1];
int length = decimal.length();
while(length>2) {
decimal = decimal.substring(0,decimal.length()-1);
}
System.out.println("decimal is " + decimal);
System.out.println("integer is " + integer);
}
//System.out.println(decimal);
}
}
乘以 10,000(百分比为 100,小数点后两位为 100),截断为整数,除以 100(返回百分比)。
一次一步写出来,为了阐述清楚:
Double n = input.nextDouble();
int i = (int)(n * 10_000);
Double pc = i / 100.0;
System.out.printf("%.2f\n", pc);
您在变量 toString
中将数字作为字符串。使用正则表达式 trim 2nd 小数点后的所有字符(如果存在)。
这是一个 one-liner:
toString = toString.replaceAll("(?<=\...).*", "");
或者直接打印出来:
System.out.println(toString.replaceAll("(?<=\...).*", ""));
我正在尝试制作一个程序,将用户输入的数字转换为百分比。转换后,我想保留小数点后的前两个数字,但不对数字进行四舍五入。例如,输入 1.23456 将得到 123.45.
我的想法是,我可以接受输入,将字符串分成小数点前后,然后创建一个循环,删除最后一位数字,直到它最多保留 2 位小数。我的问题是,每当我创建小数点输出大于 9 的东西时,我都会收到错误消息:线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:开始 0,结束 -1,长度 0,所以我可以暂时只取小数到小数点后的小数点。
我的代码:
import java.util.Scanner;
public class percentage {
public static void main(String[] args) {
try (// TODO Auto-generated method stub
Scanner x = new Scanner(System.in)) {
System.out.println("Please input a number with a decimal to be converted into a percentage: ");
String numberAsString = x.next();
double number = Double.parseDouble(numberAsString);
double percentage = (number * 100);
String toString = Double.toString(percentage);
String[] parts = toString.split("[.]");
String integer = parts[0];
String decimal = parts[1];
int length = decimal.length();
while(length>2) {
decimal = decimal.substring(0,decimal.length()-1);
}
System.out.println("decimal is " + decimal);
System.out.println("integer is " + integer);
}
//System.out.println(decimal);
}
}
乘以 10,000(百分比为 100,小数点后两位为 100),截断为整数,除以 100(返回百分比)。
一次一步写出来,为了阐述清楚:
Double n = input.nextDouble();
int i = (int)(n * 10_000);
Double pc = i / 100.0;
System.out.printf("%.2f\n", pc);
您在变量 toString
中将数字作为字符串。使用正则表达式 trim 2nd 小数点后的所有字符(如果存在)。
这是一个 one-liner:
toString = toString.replaceAll("(?<=\...).*", "");
或者直接打印出来:
System.out.println(toString.replaceAll("(?<=\...).*", ""));