除以100返回0

Dor*_*uko -1 java

我只是想计算增值税,但是当我除以100以获得总价格(价格*增值税/ 100),但它返回0.0.这是我的代码:

        a.price=sc.nextInt();

        a.vat=sc.nextInt();

        a.total=a.precio*a.iva/100;
Run Code Online (Sandbox Code Playgroud)

'total'定义为FLOAT而不是INT

NIN*_*OOP 14

你需要将表达式转换为float.我在这里使用了浮点文字100.0f.

a.total= a.precio*a.iva/100.0f;
Run Code Online (Sandbox Code Playgroud)

  • @UwePlonus是的,我知道,我刚回答了一个基本问题*除以100返回0*.Op至少应该得到整数的基础知识,并且在使用Java API之前浮动airthmetic,cast和表达式是正确的. (3认同)

Bri*_*new 6

欢迎使用整数运算.你想用一个float或一个double值做这个,很可能你应该BigDecimal用来保持精度.


Car*_*des 5

小心 Java 中的 "/100" 操作,这会导致你计算错误并且是一个昂贵的操作(认为 / 操作是在二进制系统中完成的,而不是在十进制系统中完成)。

我在一个银行项目中,所有金额的长值都是两位小数(例如 123.45€ 是 12345),所以我们必须和你做同样的操作(“/ 100”)。我们发现有些金额会导致四舍五入……漏掉一分钱(这在银行业是不可接受的)。

但是 BigDecimal 使用简单的“movePointLeft”处理相同的操作,因此我建议您使用下一个代码:

total = (BigDecimal.valueOf(price * VAT)).moveLeft(2).doubleValue()
Run Code Online (Sandbox Code Playgroud)