BG Development


Страници: (3) [1] 2 3   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Смятане на данък в база данни, sqlite
thrawn
Публикувано на: 13-08-2019, 15:24
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2448
Регистриран на: 17.01.17



Щото си нямам друга работа, реших да опаковам операциите в рам-ът в база данни. За сега е in memory ама с идея да се ползва локална такава някога.
Та защото sqlite -а е лекинко ограничен откъм типове данни за всички суми количества и т.н. ползвам цели числа.

Та се заиграх с изчисляването на данъкът. Някой сеща ли се за по-чист начин да се сметна (сумите са с точност до стотна а количествата - хилядна)

CODE
select sum(total) as total, sum(neto) as neto from (
      select total, cast(total / ((tax_amount + 10000.0) / 10000.0) as integer) neto from (
            select sum(qty * price) total, tax_amount from items group by tax_group, tax_amount
      )
)


Това мнение е било редактирано от thrawn на 13-08-2019, 15:25
PMEmail Poster
Top
dvader
Публикувано на: 13-08-2019, 19:58
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4545
Регистриран на: 12.07.05



Няма ли fixed point за тебе...
Цена в стотинки, количества в грамове...


--------------------
I find your lack of faith disturbing
PM
Top
thrawn
Публикувано на: 13-08-2019, 20:02
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2448
Регистриран на: 17.01.17



Ми, в нормалните бази данни има. Тука не, затова и питам...
Да не говорим, че постановката е леко опростена заради наличието на отстъпка в проценти или стойност по ред или за транзакция.

Ако някой има идея за решение да казва. Става дума за sqlite.
PMEmail Poster
Top
bvbfan
Публикувано на: 13-08-2019, 20:14
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3279
Регистриран на: 08.12.13



Как така ще няма? SQLite има float формат.


--------------------
QUOTE (Bender @ 23-04-2015, 19:11)
Xamarin: ЛАПАЙ!
Ти: Добре...
PMEmail Poster
Top
thrawn
Публикувано на: 13-08-2019, 20:36
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2448
Регистриран на: 17.01.17



С плаваща запетая е.
PMEmail Poster
Top
dvader
Публикувано на: 13-08-2019, 20:50
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4545
Регистриран на: 12.07.05



QUOTE (thrawn @ 13-08-2019, 20:36)
С плаваща запетая е.

Ма fixed point нямах предвид да ползваш такъв тип а да си ползваш най нормален integer.
В sqlite мисля си беше 64 битов, би трябвало да ти стигне.


--------------------
I find your lack of faith disturbing
PM
Top
thrawn
Публикувано на: 13-08-2019, 20:59
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2448
Регистриран на: 17.01.17



Ми баш инт ползвам де. "Проблемът" не в самото съхранение на данните а в сметките. Изчисляването на данните минава през float и нещо не ми допада много много.

Или може би, не ти разбрах първия пост. Точно това имах в предвид с точността. Цената е в стотинки (точност до стотна) а количеството в грамове (точност до хилядна).

Ей тоя фрагмент нещо ми е грозен:
CODE
((tax_amount + 10000.0) / 10000.0)
PMEmail Poster
Top
dvader
Публикувано на: 13-08-2019, 21:07
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4545
Регистриран на: 12.07.05



huh, ми разкарай ги тия .0, за какво са ти?
13% от 50 са ти 50 * 0,13.
Ако искаш точност два знака правиш
(50 * 100) * (0,13 * 100) / (100 * 100)

Ако искаш три знака, вместо 100 ползваш 1000 и т.н.



--------------------
I find your lack of faith disturbing
PM
Top
thrawn
Публикувано на: 13-08-2019, 21:18
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2448
Регистриран на: 17.01.17



Размерът на данъка също е цяло число (20% -> 2000). Така цялото изчисление става с цели числа, и деленето съответно е целочислено (вместо 1.2 се плучава 1). Та нулите са за да не ползвам целочислено делене.
PMEmail Poster
Top
dvader
Публикувано на: 13-08-2019, 22:01
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4545
Регистриран на: 12.07.05



Цялата идея на fixed point *е* да ползваш целочеслено делене.

https://en.wikipedia.org/wiki/Fixed-point_arithmetic


--------------------
I find your lack of faith disturbing
PM
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (3) [1] 2 3  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0