Android Studio中Double类型计算小数位丢失问题求助
问题分析与解决
你的计算结果小数部分始终显示为0,核心问题大概率出在计算值的真实性或格式化规则设置上,以下是针对性的排查和修复方案:
第一步:确认计算结果的真实值
先在格式化代码前打印tot的实际数值,验证它是否真的包含小数部分:
// 在ed5.setText(...)之前添加这行代码 System.out.println("实际计算结果:" + tot);
- 如果打印结果是
77.0:说明你的计算逻辑本身得到的就是整数,需要检查st1/dq1*wg1这类表达式的输入值(比如ed2、ed3等文本框的内容是否符合预期); - 如果打印结果是
77.3:问题出在DecimalFormat的格式化规则上。
第二步:修复格式化规则
你当前使用的DecimalFormat(".2")模式定义不规范,没有明确指定整数部分的格式,导致输出异常。正确的保留小数格式应该用以下两种:
#.##:显示有效数字,比如77.3会输出77.3,77.0会输出77;0.00:强制显示两位小数,比如77.3会输出77.30,77.0会输出77.00。
修改后的代码示例:
// 替换原格式化对象的创建代码 DecimalFormat precision = new DecimalFormat("#.##"); // 若需要强制保留两位小数,改用这行: // DecimalFormat precision = new DecimalFormat("0.00");
额外说明
由于你已经将输入文本解析为Double类型,整数之间的除法会自动按浮点数计算,不需要担心整数除法导致的小数丢失问题。
内容的提问来源于stack exchange,提问作者Ryuuu126
相关产品推荐
相关产品推荐

