Size: a a a

2020 November 15

li

long long int in Rust Beginners
Mikail Bagishov
let mut ans = ((x as f64).sqrt()) as u64;

while ans*ans > x {
  ans -= 1;
}
while (ans+1)*(ans+1) <= x {
   ans += 1;
}
Всё ещё не понимаю. Кажется, мне нужно знать как конвертируется u64 в f64 для того, чтобы это понять
источник

MB

Mikail Bagishov in Rust Beginners
long long int
Всё ещё не понимаю. Кажется, мне нужно знать как конвертируется u64 в f64 для того, чтобы это понять
Выбирается значение f64, наиболее близкое к переданному инту
источник

/

/bin/cat in Rust Beginners
as уже сейф?
источник

MB

Mikail Bagishov in Rust Beginners
Для маленьких чисел (до примерно 2**53 в случае f64) это представление будет точным, для больших - приближенным, но первые 53 двоичных знака будут верными
источник

/

/bin/cat in Rust Beginners
[src/main.rs:2] u64::MAX = 18446744073709551615
[src/main.rs:3] u64::MAX as f64 = 18446744073709552000.0
источник

MB

Mikail Bagishov in Rust Beginners
long long int
Всё ещё не понимаю. Кажется, мне нужно знать как конвертируется u64 в f64 для того, чтобы это понять
источник

/

/bin/cat in Rust Beginners
накинуло к нему еще + 385
источник

li

long long int in Rust Beginners
Какой-то низкоуровневый паркур, ничего не понимаю
источник

MB

Mikail Bagishov in Rust Beginners
/bin/cat
as уже сейф?
1) да
2) его  ансаундность в данном случае проявится все равно не могла
источник

/

/bin/cat in Rust Beginners
long long int
Какой-то низкоуровневый паркур, ничего не понимаю
разница не больше чем на 20 будет
источник

/

/bin/cat in Rust Beginners
но это только на больших числах
источник

li

long long int in Rust Beginners
/bin/cat
разница не больше чем на 20 будет
Почему на 20?
Почему именно до 2 ** 53?
Почему это работает?
источник

li

long long int in Rust Beginners
Наверное, читать вопросы снизу вверх
источник

/

/bin/cat in Rust Beginners
long long int
Почему на 20?
Почему именно до 2 ** 53?
Почему это работает?
[src/main.rs:2] u64::MAX = 18446744073709551615
[src/main.rs:3] u64::MAX as f64 = 18446744073709552000.0

18446744073709552000 - 18446744073709551615  = 385
sqrt(385) = 19.6
источник

MB

Mikail Bagishov in Rust Beginners
/bin/cat
[src/main.rs:2] u64::MAX = 18446744073709551615
[src/main.rs:3] u64::MAX as f64 = 18446744073709552000.0
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=f872909ce8d2417193680cc1b4f038da
Корень на 1 поменялся всего, как я и ожидал
источник

MB

Mikail Bagishov in Rust Beginners
long long int
Почему на 20?
Почему именно до 2 ** 53?
Почему это работает?
про 2**53 это вытекает из устройства даблов, сейчас попробую быстренько пересказать
источник

li

long long int in Rust Beginners
В меня можно тыкнуть статьей и я пойду читать
источник

MB

Mikail Bagishov in Rust Beginners
wikipedia IEEE754
источник

MB

Mikail Bagishov in Rust Beginners
источник

li

long long int in Rust Beginners
Спасибо ¯\_(ツ)_/¯
источник