Java 从设置双精度值到2位小数

Java 从设置双精度值到2位小数,java,android,android-studio,Java,Android,Android Studio,我想将我的双精度值格式化为2位小数,然后将其文本转换为语音。 这是我的代码: mares = mass * acc; DecimalFormat df = new DecimalFormat("#.00"); df.format(mares); String mare = String.format("The force is %f", df); home.speak(mare,TextToSpeech.QUEUE_FLUSH, null); 但它崩溃了,我不知道为什么,我把5和6放在一起,它

我想将我的双精度值格式化为2位小数,然后将其文本转换为语音。 这是我的代码:

mares = mass * acc;
DecimalFormat df = new DecimalFormat("#.00");
df.format(mares);
String mare = String.format("The force is %f", df);
home.speak(mare,TextToSpeech.QUEUE_FLUSH, null);
但它崩溃了,我不知道为什么,我把5和6放在一起,它应该把它们相乘,然后给我30.00或者类似的数字。 当我删除DecimalFormat时,结果是30.00000000000000,我只是不喜欢它,太多的零。 有人能帮我吗? 提前谢谢

您的DecimalFormat正在返回格式化字符串,但您忽略了它,并将其作为参数传递给string.format,这肯定是不对的

将df.format的返回值指定给字符串以供进一步参考:

String mare = df.format(mares);
或直接将数值传递到String.format,并指定适当的格式精度:

String mare = String.format("The force is %.2f", mares);