将double转换为带一位小数和一位小数的double?

Convert double to double with one decimal point and one decimal place?

我想将任何双精度四舍五入为一个小数点和一位小数的双精度数,这样 29575.347434 就是 2.3。

尝试使用 decimalFormat 执行此操作,但是当我尝试 #.# 时,我只得到一个格式为 29575.3 的字符串,并且我不知道如何在保持我的值加倍的同时切断所有小数点。

你可以得到数字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

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

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

您的小数格式似乎适用于 #.#。这将为您提供整数和一位小数。然后你可以做你的数字 29575.3 % 10 并得到 5.3.

试试这个代码看看:

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

尝试以下操作:

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

您还可以传递一个 string ,因为 parseFloat() 会将其转换为 number,然后转成希望的 decimal(输出又是string),然后通过函数Number()转换回decimal

适合我。