With uint256 amount = 5000000
,
the type of the expression amount.div(24).div(60).div(60).mul(1)
is uint256
,
and its value is 57
.
And when you divide uint256(57)
by 100
, the result is obviously 0
.
I don't know anything about the type ufixed8x2
, but assuming that it handles arithmetic operations correctly, you should cast the intermediate result of 57
to this type before dividing it by 100
.
In other words, change this:
profit = ufixed8x2(amount.div(24).div(60).div(60).mul(PERCENT_DIVIDER).div(100));
To this:
profit = ufixed8x2(amount.div(24).div(60).div(60).mul(PERCENT_DIVIDER)).div(100);
At least in other strongly-typed languages, this method does the job.
If the div
method is not implemented for the ufixed8x2
type, then you can either implement it for this type, or just replace it with a simple /
(which you may as well do for all the other occurrences of this method in your code, since there is no benefit in calling it with a constant value - it is a pure waste of gas).