I have some business logic with arithmetic expression and their results are as follows

```
(10.0 * 20.58)/1.0=205.7999..98
(6.0 * 37.9)/1.0=227.3999..98
(5.0 * 50.0)/1.0=250.0
(10.0 * 37.9)/1.0=379.0

```

But expected results are

```
(10.0 * 20.58)/1.0=205.8
(6.0 * 37.9)/1.0=227.4
(5.0 * 50.0)/1.0=250.0
(10.0 * 37.9)/1.0=379.0

```

I am not clear why we are getting that .999..98 fraction part? Due to that my equals comparison is failing and so business logic. For few cases we are using

```
amt = (double)Math.round(orderAmt*100000)/100000;

```

But that is not possible to do the same in each and every place where we have double arithmetic expression.

I want to know why we get such results randomly and is there any possibility to round the results to 5 decimal places instead of rounding every where?