我的货币转换器出现意外结果。以下是相关代码:
val = Float.parseFloat(values);
us=val*0.27f;
usa.setText(Float.toString(us));
pk=val=26.95f*val;
pak.setText(Float.toString(pk));
u=val*0.16f;
uk.setText(Float.toString(u));
om=val*0.10f;
oman.setText(Float.toString(om));
ks=val*1.02f;
ksa.setText(Float.toString(ks));
e=val*0.20f;
eu.setText(Float.toString(e)
我明白了:
us=0.27
e=0.2
uk=0.16
ksa=1.02
oman=2.69
pak=26.95
oman
- 值不正确。为什么呢?
答案 0 :(得分:3)
下面:
pk=val=26.95f*val;
您覆盖val
值。删除val=
,它应该可以正常工作。
答案 1 :(得分:0)
PK = VAL = 26.95f * VAL; overwiting ..
答案 2 :(得分:0)
你知道Float.parseFloat的参数类型是String吗?实际上parseFloat方法用于解析String to Float,但是你在评论中说所有的变量都是float !!
答案 3 :(得分:-1)
浮点数,双精度数,浮点数,双精度数在java中不准确。例如:
double number1 = 0.58 * 100;
System.out.println("" + number1);
,输出为57.99999999999999,不是预期的58。可以使用BigDecimal类来获得准确的性能。