I'm coming in to this discussion a little late, but here's the way I, personally, would see it.
> 100 - 50% == 50 ; as first stated This, to me, would equate to: 100 - (100 * .50) == 50 Similarly: 200 - 50% == 200 - (200 * .5) == 100 > I suppose > 50% - 100 == -50% ; ? or should be illegal? I don't think you could really do that, because just what is that 50% *of*? Perhaps 50% - 100% .. > And > 50% * 100 == 5000% > 100 * 50% == 50 An interesting thought. Should 100 + 50% == 100 + (100 * .5) and 100 * 50% == 100 * .5 ? 50% * 100, though.. I can see where that would be believable. :/ > > Shouldn't that be > > > > >> 100 - 50% > > == 50% Not necessarily. It'd be 100 minus 50% of 100, which is 50. Otherwise, you should stick with 100% - 50% = 50%.. > > and thus > > > > >> rate: 8.25% > > == 8.25% > > >> price: $100.00 > > == $100.00 > > >> tax: price * rate > > == $8.25 Precisely; the datatype of the first value, the value upon which the percent is being acted, should be the returned datatype. No? > > >> taxrate: to-percent [$8.25 / $100] > > == 8.25% to-percent on type block! ? I don't see why. Use parens, perhaps, if you feel the need, but traxrate: to-percent $8.25 / $100 should be fine. Results in (8.25E-2 * 100), more or less. Some related, interesting behavior. You can do money! + money!, money! - money!, money! / money!, but not money! * money!. Heh. money! / money! results in number!. (I like how integer! and decimal! values all fall under the category number! .. workes nicely.) --Charles -- To unsubscribe from this list, please send an email to [EMAIL PROTECTED] with "unsubscribe" in the subject, without the quotes.
