drBatty пишет:100+40% == 10000% + 40% = 10040% = 100.4
Обратите внимание:
1) примем как аксиому, что 1 эквивалентно 100%.
(эквивалентность здесь значит, что везде мы можем писать вместо 1. При этом это относится только к числам. например 1кг это не 100%. Это 100% * 1кг. Умножение здесь появилось потому, что процент по определению - часть. Т.е. дробь. Потому-то на неё надо именно умножать).
2) также примем как вторую аксиому, что 1%+1%=2% (т.е. % величина аддитивная, и их можно складывать как действительные числа, получая на выходе другие числа, которые будут также процентами).
3) из аксиом (1) и (2) следует, что 100 эквивалентно 10000% (это можно доказать математической индукцией, или ручками, многократно применяя эти аксиомы).
4) по аксиоме (2) мы получаем, что 10000% + 40% === 10040%.
5) по аксиоме (1) мы получаем, что 10040% === 100.4
Вывод: с точки зрения математики должно получится 100.4
Почему-же получается 140? Всё просто: сменился алгоритм выполнения операции +. И аксиома 1 теперь НЕ верна. Алгоритм сменили на следующий:
Дано X+Y
1) проверяем посл. символ Y, если это %, то goto 4.
2) иначе складываем как обычно.
3) выход
4) если %, то сначала вычисляем X.
5) вычисляем сумму, по формуле(алгоритму) X + X * Y / 100 (здесь сам процент уже отрезан)
6) выход
7) профит.
Т.е. в данном случае % это не оператор, а ТИП числа. 10% это вовсе не 10, а некая особая НЕХ, которая обладает особыми свойствами. Например сложение работает по другому. Перед сложением необходимо преобразовать 10% в что-то другое, причём математически правильный подход даёт убунта9 (100.4), но другие ОС дают хоть и неправильный результат, но на практике куда как более удобный. Конечно, бухгалтеру пофиг, ему деньги считать надо, а вот программисту - нет. Именно он обязан знать, что на самом деле, вычисления происходят по другой формуле (X + X * Y). Вы видите - если вы не знаете математики, вы даже простейший калькулятор не напишите. Ибо заказчик требует 140, а у вас получается 100.4. Как сделать из 100.4 -> 140 - понять без знания математики невозможно (ибо +39.6 или ещё что-то такое помогут только в этом случае)
И не надо мне говорить, что аналитик должен объяснять кодеру, как сложение с процентом реализовать.
Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)