如何从双精度整数中获取小数部分?

时间:2019-04-05 09:00:21

标签: java math decimal decimal-point

如何将双精度数分成两个整数?小数点前的第一个数字和小数点后的第二个数字。 例如:

Function

我需要小数部分为整数。

5 个答案:

答案 0 :(得分:3)

使用Double.toString()double映射到StringDouble.toString(doub),然后使用String.split("\\.")获得String的不同部分。然后,可选地,Integer.valueOf()将这些值解析为Integer s:

double doub = 543.345671;
// Here, you want to split the String on character '.'
// As String.split() takes a regex, the dot must be escaped. 
String[] parts = Double.toString(doub).split("\\.");
System.out.println(Integer.valueOf(parts[0]));
System.out.println(Integer.valueOf(parts[1]));

输出:

543
345671

答案 1 :(得分:2)

使用正则表达式拆分获取它,

double doub = 543.345671;
String data[] = String.valueOf(doub).split("\\.");
System.out.println("Before decimal: " + Integer.parseInt(data[0]) + ", After decimal: " + Integer.parseInt(data[1]));

打印

Before decimal: 543, After decimal: 345671

答案 2 :(得分:2)

如我所见

Double d=543.345671;
String line=String.valueOf(d);
String[] n=line.split("\\.");
int num1=Integer.parseInt(n[0]);
int num2=Integer.parseInt(n[1]);

答案 3 :(得分:2)

这取决于小数点后要多少位数,但这是要点:

double d = doub - (int)doub; // will give you 0.xyz
int result = d * 1000; // this is for 3 digits, the number of zeros in the multiplier decides the number of digits 

答案 4 :(得分:1)

这就是我所需要的。谢谢尼尔·里维!但是有时可能会舍入错误。

    double doub = 543.04;
    int num1 = (int) doub; //543
    int num2 = (int) ((doub-num1)*1000000); //39999

我添加了Math.round()来正确获取小数部分。

    double doub = 543.04;
    int num1 = (int) doub; //543
    int num2 = (int) Math.round((doub-num1)*1000000); //40000