Merge pull request #390 from nestfiy/main

fix: can't call method `abs` on ambiguous numeric type `{float}`
pull/399/head
Sunface 3 years ago committed by GitHub
commit f5ed08fac9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -156,7 +156,7 @@ fn main() {
你可能以为,这段代码没啥问题吧,实际上它会 *panic*(程序崩溃,抛出异常),因为二进制精度问题,导致了 0.1 + 0.2 并不严格等于 0.3,它们可能在小数点 N 位后存在误差。
那如果非要进行比较呢?可以考虑用这种方式 `(0.1 + 0.2 - 0.3).abs() < 0.00001` ,具体小于多少,取决于你对精度的需求。
那如果非要进行比较呢?可以考虑用这种方式 `(0.1_f64 + 0.2 - 0.3).abs() < 0.00001` ,具体小于多少,取决于你对精度的需求。
讲到这里,相信大家基本已经明白了,为什么操作浮点数时要格外的小心,但是还不够,下面再来一段代码,直接震撼你的灵魂:

@ -61,7 +61,7 @@ error[E0384]: cannot assign twice to immutable variable `x`
error: aborting due to previous error
```
具体的错误原因是 `cannot assign twice to immutable variable x`(对不可变的变量无法进行二次再赋值),因为我们尝试给不可变的 `x` 变量赋予第二个值。
具体的错误原因是 `cannot assign twice to immutable variable x`(对不可变的变量无法进行二次再赋值),因为我们尝试给不可变的 `x` 变量赋予第二个值。
这种错误是为了避免无法预期的错误发生在我们的变量上:一个变量往往被多处代码所使用,其中一部分代码假定该变量的值永远不会改变,而另外一部分代码却无情的改变了这个值,在实际开发过程中,这个错误是很难被发现的,特别是在多线程编程中。

Loading…
Cancel
Save