为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

狐的传说 2022-09-22 13:56:46

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

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

我需要小数部分到整数。


查看完整描述

5 回答

?
慕无忌1623718

TA贡献1431条经验 获得超3个赞

用于将 映射到 :,然后 用于获取作为 s 的不同部分。然后,(可选)将这些值解析为 s:Double.toString()doubleStringDouble.toString(doub)String.split("\\.")StringInteger.valueOf()Integer


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


查看完整回答
反对 回复 2022-09-22
?
慕斯709654

TA贡献1523条经验 获得超5个赞

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


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 



查看完整回答
反对 回复 2022-09-22
?
噜噜哒

TA贡献1467条经验 获得超6个赞

正如我所看到的,


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]);


查看完整回答
反对 回复 2022-09-22
?
翻过高山走不出你

TA贡献1525条经验 获得超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


查看完整回答
反对 回复 2022-09-22
?
翻翻过去那场雪

TA贡献1727条经验 获得超12个赞

这就是我需要的。谢谢 尼尔·利维但有时可能会出现舍入错误。


    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


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信