Aleh
https://golang.org/src/math/big/decimal.go
Aleh
А можно просто это юзать ?
Aleksey
Деньги. В копейках, центах и т.д. в целом лучше
Kirill
А можно просто это юзать ?
думаю да, decimal для этого и был придуман
Aleh
Либу использовали до того как в го реализовали походу
Aleksey
https://m.habrahabr.ru/post/201066/
Aleksey
Ну и есть сайт, вспомнить не могу, где два флоат числа в сумме дробь дают
Logan
Ну и есть сайт, вспомнить не могу, где два флоат числа в сумме дробь дают
они и должны давать дробь. Просто некоторые языки это учитывают и мухлюют, подставляя целое вместо дроби. Про float была отличная статья на хабре (перевод, конечно). Где рассказывалось, как именно устроен float и объяснялась, откуда берется его точность (и куда теряется)
hamper 𓅝
Ну 0.3 + 0.7 != 1 обычно в большинстве языков.
Slava
эм
🎉
http://www.sql.ru/forum/412838/buhgalterskoe-okruglenie
Aleksey
Во http://0.30000000000000004.com/
Vasilii
Кто предлагает хранить деньги в decimal загуглите мальтийское скудо
Vasilii
Да и с кувейтским динаром засада
Kirill
чет я не догнал
Kirill
переводить проблематично или что?
Vasilii
Не зная какая валюта нельзя интерпретировать decimal в сумму
Vasilii
А с мальтийским скудо нельзя округлить до десятичных дробей с фиксированной запятоц
Vasilii
Я офигел малость, когда снял в банкомате 20 динаров в кувейте и получил смс что мне выдали 200.00 динаров
Vasilii
Вместо 20.000
Kirill
лол
Andrey
иногда цены просто _не_могут_быть_целым_ числом. Поэтому совет считать деньги целыми числами не универсален.
Vladimir
Считай цены в копейках или центах
Andrey
это когда они очень маленькие
Andrey
меньше цента
Vladimir
Ну считай в микроцентах
Vladimir
Наноцентах
Vladimir
Пикоцентах
Vladimir
Кстати, какой кейс у микроцентов?
Andrey
и передавать потом эти пикоценты в стороннюю систему, которая принимает доллары?
Andrey
амазон, например
Vladimir
и передавать потом эти пикоценты в стороннюю систему, которая принимает доллары?
Ну это несколько проще чем делать корректную математику на float
Vladimir
Andrey
Vladimir
Ну это миллиценты
Andrey
Чеб нет?
ну, это если она принимает, то конечно
Andrey
Ну это миллиценты
эм. Речь про целые vs дробные, не?
Vladimir
эм. Речь про целые vs дробные, не?
Ну я к тому что целые тут ок
Andrey
0,023?
Vladimir
Да
Vladimir
2300 миллицентов
Andrey
Внутри оно может хоть живым бухгалтером считать. Наружу оно выдаёт дробное число. "Наружу" - это не только монитор.
Vladimir
Напечатать такое без флоат легко
V
так разговор же про монгу был, там базовые числа умещают в 32 бита, что накладывает понятные ограничения при суммировании выше определенного значения
V
numberDecimal дает 128 бит в монге и там уже достаточно пофик считать в копейках или дробях
Andrey
Напечатать такое без флоат легко
Кроме напечатать есть ещё вариант передать во внешнюю биллинговую систему со всеми промежуточными цифрами
Andrey
И там придётся указывать 0,023 USD за Гб умноженный на количество часов и конечную сумму
Andrey
какой дадут, такой и используется
Vladimir
какой дадут, такой и используется
Ну так мы начинаем за уши притягивать аргумент к апи которого не существует
Andrey
Вариант с миллицентами приемлем для внутреннего применения. не буду с этим спорить
Vladimir
В случае того же Амазона у них вероятно свой биллинг
Vladimir
И он может принимать что им хочется
Vladimir
Ещё биллинг ч тем же успехом может принимать строку
Vladimir
И даже миллиценты интом
Andrey
Type: Double
Vladimir
Ну ок
Vladimir
Тем не менее делать рассчеты с деньгами в даблах глупо
Aion
Ну ок
Это апи отдает такой тип
Aion
Что там под капотом - для меня тайна
Vladimir
Вероятно инты
Vladimir
Ну так или иначе инты
Vsevolod
А что делают в случае деноминации?
heavycharged
кажется спутали демонизацию и деноминацию)
Vladimir
Тьфу, не так прочитал
Vladimir
Да
MOS2502
Никто так ответить не смог, спрошу еще раз пожалуй, как правильно привести слайс array1 []int к array2 []string?
Lev
насколько это критичная задача, если ты не можешь просто обойти слайс и сконвертить?)
MOS2502
Не критичная, просто array1 []string = array2 []string работает легко и замечательно, а вот с подобной конструкцией, с типом int[] уже большие проблемы.
Lev
чет не понял аналогии)
Vladimir
Не критичная, просто array1 []string = array2 []string работает легко и замечательно, а вот с подобной конструкцией, с типом int[] уже большие проблемы.
Го строго типизированный, нельзя просто взять и преобразовать, нжуон действиетльно руками проходится
MOS2502
просто думал, что подобная конструкция сработает array2 []string = strconv.Itoa(array1), но работает подобное только на единичных элементах