用这个
public float decimalDigits(int decimaldigits, float x){
final NumberFormat numFormat = NumberFormat.getNumberInstance();
numFormat.setMaximumFractionDigits(decimaldigits);
final String resultS = numFormat.format(x);
String parsable=resultS.replace(".", "");
parsable=resultS.replace(",", ".");
float ris=Float.parseFloat(parsable);
return ris;
}
我已将字符串替换添加到代码中以避免由点约定引起的解析问题(例如,格式化后 1234.34 变为 1.234,34 导致在浮点中重新解析时出错)
如果你只是一个格式可视化问题,你也可以使用字符串,浮点变量没有小数位并不重要,所以这是另一种有效的方法:
public String decimalDigits(int decimaldigits, float x){
final NumberFormat numFormat = NumberFormat.getNumberInstance();
numFormat.setMaximumFractionDigits(decimaldigits);
final String resultS = numFormat.format(x);
return resultS;
}
如果有人对此解决方案的有效性有疑问,应询问详细信息或尝试编译代码并在否决之前对其进行测试,谢谢。代码已经过测试并且工作起来就像一个魅力。
警告
显然,您必须传递float因为该方法使用Float.parseFloat,如果您想传递一个double ,则必须在将其传递给方法之前使用强制转换来浮动,否则您必须更改所有方法原语并从 float 解析为双倍的。双精度和浮点数是不同的。