| BG Development · За реклама · За контакти |
Помощ Търсене Потребители Календар Правила |
| Здравей! ( Включване | Регистриране ) |
| Страници: (4) 1 [2] 3 4 ( Първото ново мнение ) | ![]() ![]() ![]() |
| thrawn |
Публикувано на: 13-08-2019, 22:15
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3825 Регистриран на: 17.01.17 |
Ми кажи как де. Нали това питам
По горната схема не става с целочислено деление. А аз друго не измислих. Ето примерни данни qty = 1000, price = 120, tax_amount = 2000. Трябва да се получи 100 (и 96 да получиш, пак се ядва, щото и двата варианта са включени в задачата). Това мнение е било редактирано от thrawn на 13-08-2019, 22:20 |
| dvader |
Публикувано на: 14-08-2019, 08:03
|
![]() Име: Валерий Тодоров Група: VIP Ранг: Почетен член Мнения: 5404 Регистриран на: 12.07.05 |
Нещо не схванах, това което си написал са реално qty = 1.00, price 1.20, tax_amount = 20%... Та при това положение как получи 96? Аз получавам 0,24.
в integer случая имаш 1000 * 120 * 2000 / 1000 / 100 / 100 -------------------- I find your lack of faith disturbing
|
| thrawn |
Публикувано на: 14-08-2019, 08:36
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3825 Регистриран на: 17.01.17 |
96 е нетото.
Само че, така като го смяташ се смята отстъпка в проценти която не е включена в сумата. Проблемът реално се появява когато се вади вкючен процент (изчисляването на ДДС е такава операция). |
| dvader |
Публикувано на: 14-08-2019, 10:15
|
![]() Име: Валерий Тодоров Група: VIP Ранг: Почетен член Мнения: 5404 Регистриран на: 12.07.05 |
Самата операция няма значение.
За да извадиш 20% от сумата (която вече сме я сметнали) просто накрая имаме деление, вместо умножение. Сума = (1000 * 120) / 100 / данък * 100 Имаш едно /100 и *100, така че ги махаш и имаш: 1000 * 120 / 1200 == 100 int(qty * 1000) * int(price * 100) / int(1,2 * 100) int (1.0 * 1000) * int(1,20 * 100) / int(1,2 * 100) Това мнение е било редактирано от dvader на 14-08-2019, 10:16 -------------------- I find your lack of faith disturbing
|
| Igbr |
Публикувано на: 14-08-2019, 10:57
|
![]() Име: Иван Братов Група: Потребител Ранг: Посетител Мнения: 67 Регистриран на: 01.08.06 |
Така приемаш, че ДДС-то е 20% и използваш делението на 1.2
Но има и ставка 9%, а в бъдеще може да има и други Аз го правя така: Qty * (VatPrice / (VatRate / 100+1)) или в твоя случай Qty/1000 * (VatPrice/100 / (VatRate/100 / 100+1)) -------------------- <cheers>
<Igbr> |
| thrawn |
Публикувано на: 14-08-2019, 11:14
|
||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3825 Регистриран на: 17.01.17 |
@dvader, бъркаш последната операция - трябва да е + а не *
и стигаш до това в първия ми пост. Но пък, като умножа сумата по 10 почва да работи и без да се минава през float (1000 * 120) * 10 / 100 / (20 + 100) Май точно това се опитвах да изобретя Са остава да го подкарам да работи с 4 числа за данък ---едит--- (1000 * 120) * 10 / 100 * 100 / (2000 + 100 * 100) Това мнение е било редактирано от thrawn на 14-08-2019, 11:26 |
||
| thrawn |
Публикувано на: 14-08-2019, 13:26
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3825 Регистриран на: 17.01.17 |
Няма такава пръчка
Така работи https://www.db-fiddle.com/f/3fE1wfohe9E7jqHtbGmLUm/0 но когато сумата стане под стотинка закръглява до 0 https://www.db-fiddle.com/f/3fE1wfohe9E7jqHtbGmLUm/1 . Ако вдигна точността с идеята, че ще закръгля в приложението работи идеално под стотинка https://www.db-fiddle.com/f/3fE1wfohe9E7jqHtbGmLUm/2 но изчисляването на данъкът се дъни https://www.db-fiddle.com/f/3fE1wfohe9E7jqHtbGmLUm/3 |
| dvader |
Публикувано на: 14-08-2019, 14:22
|
||
![]() Име: Валерий Тодоров Група: VIP Ранг: Почетен член Мнения: 5404 Регистриран на: 12.07.05 |
Абе аз се опитвам да му обясня как работи fixed point аритметиката а дали ще ползваш константа или променлива е отделна тема. -------------------- I find your lack of faith disturbing
|
||
| dvader |
Публикувано на: 14-08-2019, 14:24
|
||
![]() Име: Валерий Тодоров Група: VIP Ранг: Почетен член Мнения: 5404 Регистриран на: 12.07.05 |
Нищо не бъркам, при мен данъка не е 20% а 1.20 представено fixed point (120) Сума без данък = Сума с данък / 1.20 Освен това, когато правиш събиране и изваждане трябва да работиш с еднаква точност. Това мнение е било редактирано от dvader на 14-08-2019, 14:26 -------------------- I find your lack of faith disturbing
|
||
| bvbfan |
Публикувано на: 14-08-2019, 14:37
|
||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4169 Регистриран на: 08.12.13 |
dvader е прав, според мен, но аз все още не виждам защо да не ползваш float
https://stackoverflow.com/questions/9149063...l-places-always --------------------
|
||
Страници: (4) 1 [2] 3 4 |
![]() ![]() ![]() |