LINUX.ORG.RU

Преобразование дроби в int с сохранением остатка.

 


0

1

У питона есть библиотека которая может работать с дробями храня их в памяти как целое? Т.е. в памяти хранится как 250 и 350, но при выводе выдаёт 2.5 и 3.5

Ответ на: комментарий от steemandlinux

Что мда?

У тебя ярко выраженное непонимание принципов вычислений на вычислительных машинах. Более того, у тебя явные проблемы с выражением словами того, что тебе вообще надо. В таких условиях я не вижу способов тебе помочь, при всём возможном желании.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Вещественные числа хранятся как порядок и мантисса, что мне в предыдущем треде и выдавал str(1e-11). Однако decimal делает округление, а не делает вычисления в целых числах, а потом конвертирует int в str в обход вещественных чисел.

steemandlinux ★★★★★ ()
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от i-rinat

Дичь какая-то:

decimal.getcontext().prec = 9
decimal.getcontext().rounding = ROUND_DOWN
a = 0.000013482
b = 1.0
print(Decimal(a)*Decimal(b))

0.0000134820000

decimal.getcontext().prec = 9
decimal.getcontext().rounding = ROUND_DOWN
a = '0.000013482'
b = '1.0'
print(Decimal(a)*Decimal(b))

0.0000134820

В обоих случаях он ложил на точность.

steemandlinux ★★★★★ ()
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от i-rinat

что для точных расчётов нужно всё обрабатывать в целых числах

Так decimal это и есть целое число + позиция запятой в нем. Конечно то, что оно юзает bankers rounding по дефолту это большая засада, но ТС с этим уже справился.

provaton ★★★★★ ()