Size: a a a

Rust — русскоговорящее сообществo

2020 April 12

MD

Max Demydenko in Rust — русскоговорящее сообществo
Как с этим бороться?
Тип f64 и просто плюсуется +0.1
источник

YV

Yury Vorobyov in Rust — русскоговорящее сообществo
Написать свой принтф?
источник

MD

Max Demydenko in Rust — русскоговорящее сообществo
Yury Vorobyov
Написать свой принтф?
всм
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Max Demydenko
Как с этим бороться?
Тип f64 и просто плюсуется +0.1
ну обычно в таких ситуациях всегда нужно валидировать числа перед использованием, или делать не == а допускать погрешность
источник

A

Adv0cat in Rust — русскоговорящее сообществo
ну всмысле валидировать числа, которые показываются, отэто ваше 0.799999 и подобные
источник

A

Adv0cat in Rust — русскоговорящее сообществo
потому что это происходит из-за неточности вычислений связанные с числами с плавающей запятой))
источник

MD

Max Demydenko in Rust — русскоговорящее сообществo
Adv0cat
ну всмысле валидировать числа, которые показываются, отэто ваше 0.799999 и подобные
Как это делается?
источник

MD

Max Demydenko in Rust — русскоговорящее сообществo
В той же джаве с флоатом все ок вроде как.
источник

AI

Alex Ilizarov in Rust — русскоговорящее сообществo
Max Demydenko
В той же джаве с флоатом все ок вроде как.
Если используется реально float (а не какой нибудь bigdecimal) то там погрешность вычислений
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Max Demydenko
Как это делается?
Ну как как, как вам нужно, так и делается))) Можете округлять до 3 знаков, можете добавлять 0.000000001 или скоко там и округлять до того последнего знака
источник

A

Adv0cat in Rust — русскоговорящее сообществo
Хотя в расте может иначе как-то, фиг его)
источник

MD

Max Demydenko in Rust — русскоговорящее сообществo
если ошибка была бы константной то это могло бы сработать
источник

MD

Max Demydenko in Rust — русскоговорящее сообществo
источник

MD

Max Demydenko in Rust — русскоговорящее сообществo
Мне на самом деле кажется что уже что-то должно существовать, что это решает
источник

АМ

Александр Маглеванный in Rust — русскоговорящее сообществo
Max Demydenko
Как с этим бороться?
Тип f64 и просто плюсуется +0.1
А что нужно то?
Выводить в консоль округленное? Проблемы с флоатами во всех языках есть.
источник

MD

Max Demydenko in Rust — русскоговорящее сообществo
нужно получить поведение примерно такое как и в джаве у флоата
источник

MD

Max Demydenko in Rust — русскоговорящее сообществo
что бы когда я прибавляю 0.1 к 0.5, получалось 0.6)
источник

АМ

Александр Маглеванный in Rust — русскоговорящее сообществo
Max Demydenko
нужно получить поведение примерно такое как и в джаве у флоата
Я повторю, проблемы с числами с плавающей точкой во всех языках идентичны. В джаве он ведёт себя так же.
Это фишка float, а не раста.

Обычно чтобы сравнивать их берется какой то трешхолд. Что то вроде f1 - f2 >= threshold
источник

АМ

Александр Маглеванный in Rust — русскоговорящее сообществo
А не f1 == f2
источник

АМ

Александр Маглеванный in Rust — русскоговорящее сообществo
А в консольку можно писать первые n символов после запятой, чтобы глаза не мозолило, или округлять до ближайшего десятичного числа (что в джаве, скорее всего и происходит, но я не могу быть уверен)
источник