如何从双精度值获得整数的小数部分?

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

            double doub = 543.345671;    '
            int num1 = (int) doub; //543
            int num2 = getNumAfterDecimal(doub-num1); //return 345671

我需要小数部分到整数。


狐的传说
浏览 195回答 5
5回答

慕无忌1623718

用于将 映射到 :,然后 用于获取作为 s 的不同部分。然后,(可选)将这些值解析为 s:Double.toString()doubleStringDouble.toString(doub)String.split("\\.")StringInteger.valueOf()Integerdouble 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]));输出:543345671

慕斯709654

这取决于你想要的小数点后有多少位,但这是要点:double d = doub - (int)doub; // will give you 0.xyzint result = d * 1000; // this is for 3 digits, the number of zeros in the multiplier decides the number of digits 

噜噜哒

正如我所看到的,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]);

翻过高山走不出你

使用正则表达式拆分获取它,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

翻翻过去那场雪

这就是我需要的。谢谢 尼尔·利维但有时可能会出现舍入错误。    double doub = 543.04;    int num1 = (int) doub; //543    int num2 = (int) ((doub-num1)*1000000); //39999我添加了数学.round() 来正确获取小数部分。    double doub = 543.04;    int num1 = (int) doub; //543    int num2 = (int) Math.round((doub-num1)*1000000); //40000
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java