Android Studio-DecimalFormat(java.text)-工作不正常
因此,我有以下代码在Android Studio 4.0.1中制作一个简单的温度应用程序转换器:Android Studio-DecimalFormat(java.text)-工作不正常,java,android,Java,Android,因此,我有以下代码在Android Studio 4.0.1中制作一个简单的温度应用程序转换器: bt_converter.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { double tempC = Double.parseDouble(et_tempC.getText().toString()); DecimalFormat arredondar
bt_converter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
double tempC = Double.parseDouble(et_tempC.getText().toString());
DecimalFormat arredondar = new DecimalFormat("#.##");
double tempF = Double.parseDouble(arredondar.format(tempC * 1.8 + 32));
tv_tempF.setText(String.valueOf(tempF));
}
问题是,当我运行应用程序时,它会因为以下语句而崩溃:
DecimalFormat arredondar=新的DecimalFormat(“#.##”);
同样适用于:
DecimalFormat arredondar=新的DecimalFormat(“0.00”)
事实上,每一个以“0”开始并涉及点的模式都会崩溃
我尝试将其切换到:
DecimalFormat arredondar=新的DecimalFormat(“#,##”)
它实际上是工作的,但它并没有按预期显示两位小数,而且无论我输入什么tempC
值,输出总是一些数字点零(xx.0)
例如:
对于tempC=10.11111111
它显示tempF=50.0
当它应该给我50.19
或50.2
时
我已经重新安装了应用程序,清理了项目,甚至更改了我的windows 10区域设置(关于十进制符号),但它仍然保持不变
但是,如果您需要更多详细信息,请告诉我。因此,我找到了一个解决方案,它按预期工作。 我刚刚更改了最后三行代码: 以前
DecimalFormat arredondar = new DecimalFormat("#.##");
double tempF = Double.parseDouble(arredondar.format(tempC * 1.8 + 32));
tv_tempF.setText(String.valueOf(tempF));
之后:
DecimalFormat arredondar = new DecimalFormat("0.00");
double tempF = tempC * 1.8 + 32;
tv_tempF.setText(arredondar.format(tempF));
显然存在一些错误/不兼容。但是,我意识到我正在使用before代码中的第二行将tempF从String转换为Double,然后使用第三行将其再次转换回String
因此,在不进行任何转换的情况下计算tempF之后,我简单地将tempF以字符串格式直接放在输出中:
double tempF = tempC * 1.8 + 32;
tv_tempF.setText(arredondar.format(tempF));
我已将模式从“#.###”更改为“0.00”,以确保每次都有两位小数。是否有帮助?请:无论何时发布问题,请始终复制/粘贴错误消息文本。建议:试试这种格式,把发生的事情发回来:
“#,#00.0#”
嗨,安·陈!我很感谢你的回答。不幸的是,它还没有工作,因为无论我为tempC输入了什么值,应用程序都会立即崩溃。可能代码中缺少了某些内容或出现了错误,因为它不接受DecimalFormat模式中的“0”或“.”。但我仍然愿意接受任何其他建议,我非常感谢你的帮助!