On 4/12/98 4:03 PM, Akuma/Chris Baggett/DOOMer (doomer18@EARTHLINK.NET)
stated:
>int top_of_dam_messt = 18;
>int perc_hit = 6;
>
> msgnum = (int)(((perc_hit)/(top_of_dam_messt + 1)) + 0.5);
This is because ints drop decimals, regardless.
For example:
(value / max) will always be 0, since VALUE is less than Max.
(value / max) * 100, for calculating a percentage, will always be 0 also,
because 0 * 100 = 0.
The proper method for determining a percentage value is:
(value * 100) / max = %
So, applying basic substition algebra (substition? I think that is the
property being used :-), assuming you have the percentage, and want to
find what the index would be:
(percentage * max) / 100 = index
6 * 18 = 108
108 / 100 = 1.08 (drops .08)
So if you have 100%, it is: 1800 / 100 = 18
50 * 18 = 900
900 / 100 = 9
Subtract 1, and you have the index from your dam_message table. If the
table is the count, rather than the index of the top entry (which is not
the standard circle method), use (top - 1)
This formula was reached in the following manner:
(value / max) * 100 = percent
percent / 100 = value / max
percent / 100 * max = value
percent * max / 100 = value (remember, order of applying divisions and
multiplications is unimportant when only divs/mults are present! This
order also preserves divisions for a later time, when values will be
largest and risk of dropping decimals is lowest, and least important).
- Chris Jacobson
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST