Size: a a a

2020 December 23

MB

Mikail Bagishov in Rust Beginners
Какие операции надо делать?
источник

y

ymdev in Rust Beginners
Mikail Bagishov
точные результаты - никак
Да хоть 0.1 c 0.2 сложить и получить 0.3
источник

MB

Mikail Bagishov in Rust Beginners
ymdev
Да хоть 0.1 c 0.2 сложить и получить 0.3
Предлагается домножить на 10 и считать в целых числах
источник

MB

Mikail Bagishov in Rust Beginners
Если еще и делить, то хранить числа как отношение двух рациональных
источник

MB

Mikail Bagishov in Rust Beginners
В худщем случае придется искать библиотеки для символьных вычислений. Тут все зависит от того, что тебе надо
источник

MB

Mikail Bagishov in Rust Beginners
ymdev
Слушайте, а какие есть тогда безопасные способы работать с float и иметь точные результаты? Не переходить же на строковую арифметику. Она по скорости и рядом не стоит.
Опять же, длинная aka строковая арифметика проблему не решает. Если 1/3 еще можно просто запихнуть в длинное число, то sqrt(2) уже нет
источник

y

ymdev in Rust Beginners
Mikail Bagishov
Опять же, длинная aka строковая арифметика проблему не решает. Если 1/3 еще можно просто запихнуть в длинное число, то sqrt(2) уже нет
На строках можно. Просто все операции заменяются на более простые. Я давно видел на JS какую-то библиотеку, которая этим занимается. И вот там можно было посчитать в том числе и корень
источник

y

ymdev in Rust Beginners
Mikail Bagishov
Опять же, длинная aka строковая арифметика проблему не решает. Если 1/3 еще можно просто запихнуть в длинное число, то sqrt(2) уже нет
если интересно https://github.com/MikeMcl/decimal.js/
источник

MB

Mikail Bagishov in Rust Beginners
Ну и в Readme сказано
> but here precision is specified in terms of significant digits rather than decimal places, and all calculations are rounded to the precision
то есть она таки округляет
источник

MB

Mikail Bagishov in Rust Beginners
То есть принципиальных отличий от f64 незаметно кроме того, что ты можешь задавать желаемую точность
источник

MB

Mikail Bagishov in Rust Beginners
Я думаю, что тебе надо либо считать в интах, либо сравнивать с некоторой константой EPS
источник

b

in Rust Beginners
может кто в курсе, у меня есть cdylib и staticlib (для debug / release)
она постоянно читает из env данные, увесистые))) хотелось бы сделать как-то так, что один раз прочитав и расшифровав - она использовала эти же данные в последующем, но в то же время править C++ код я не очень хочу. возможно ли какое-то такое магическое решение?))
источник

E

Eugene in Rust Beginners
может кто в курсе, у меня есть cdylib и staticlib (для debug / release)
она постоянно читает из env данные, увесистые))) хотелось бы сделать как-то так, что один раз прочитав и расшифровав - она использовала эти же данные в последующем, но в то же время править C++ код я не очень хочу. возможно ли какое-то такое магическое решение?))
в файл сохранять данные?
источник

MB

Mikail Bagishov in Rust Beginners
что значит в последующем?
Данные можно кэшировать в глобальной переменной, в файле, еще где-нибудь.
источник

b

in Rust Beginners
увы но у либ на osx оказалось нет прав читать файлы
источник

b

in Rust Beginners
либо есть, но я так и не нашел где
источник

E

Eugene in Rust Beginners
увы но у либ на osx оказалось нет прав читать файлы
дать права на чтение-запись нельзя?
источник

b

in Rust Beginners
наверное можно, но как потом распространять приложение?
источник

b

in Rust Beginners
это особенность Mac OS
источник

E

Eugene in Rust Beginners
это особенность Mac OS
по идее, это вопрос не по rust, а по macos
источник