2015-11-19 60 views
0

我想将任何双数舍入为一位小数点和一位小数的格式,所以29575.347434就是2.3。将double转换为double,并带有一个小数点和一个小数位?

尝试使用decimalFormat来做这件事,但是当我尝试#。#我刚刚得到一个格式为29575.3的字符串,并且我不知道如何在保留我的值的同时切断所有小数点。

+2

你可能不得不把它看作一个字符串 - 29575.347434不会以任何标准的数学方式舍入到2.3 ......至于保持它的两倍,只是将它解析回来。 – BlakeP

+0

所以你想得到最左边的整数数字,然后是小数点,然后是最左边的小数? – Cinnam

+0

@Cinnam是的,完全如此 – snyappy

回答

2

您可以得到的号码为String,取第一位数字和'.'后面的数字。对于非负数将是

String s = Double.toString(29575.347434); 
double d = Double.parseDouble(s.charAt(0) + "." + s.charAt(s.indexOf('.') + 1)); 
System.out.println(d); // 2.3 

如果该数字可能是负数,则必须更正可能的减号代码。

+0

我不认为这会围绕数字的小数部分,只是修剪它。 –

+0

@KyleGowen你说得对,但这似乎是OP想要的。 – Cinnam

+0

哦。他说他想把他的两倍。所以我认为他希望四舍五入发生。 –

0

您可以通过使用模运算符%来完成此操作。

它看起来像你的十进制格式正在与#。#。这会给你整数和一个小数位。然后你可以做你的数字29575.3%10并得到5.3。

试试这个代码,看看:

System.out.println(29575.3d % 10); 
0

尝试以下操作:

Number(parseFloat(29575.347434).toFixed(1)) 

你也可以通过一个,因为parseFloat()将其转换为,然后trunkate到希望十进制(输出是字符串再次),然后转换回到十进制按功能​​。

适合我。

相关问题