我正在为一个学校项目创建一个RPN计算器。我对模运算符有问题。由于我们使用双数据类型,所以模数不适用于浮点数。例如,0.5%0.3应该返回0.2,但我得到一个除零的例外。如何使用float/double模数?
该指令说使用fmod()。我到处寻找fmod(),包括javadoc,但我找不到它。我开始认为这是一种我将不得不创造的方法?
编辑:嗯,奇怪。我只是再次插入这些数字,它似乎工作正常......但以防万一。使用浮动类型时,我需要注意在Java中使用mod运算符吗?我知道这样的事情不能用C++来完成(我认为)。
但是由于舍入错误,'1.0%0.1'返回...'0.09999999999999995'。任何想法如何纠正这(大概与epsilon值?) – Groostav 2015-11-18 00:13:02
舍入误差将始终发生在浮点计算。要么按照给定的值取值,要么将其四舍五入到最接近的必要值。 – Anarchofascist 2016-01-22 05:52:58
'String.format(“%。8f”,1.0%0.1)'返回'0.10000000' – Anarchofascist 2016-01-22 05:58:40