为什么浮点数的除法有不正确的尾随数字?

时间:2018-04-27 20:19:06

标签: rust

我试图创建一个返回两行之间交叉点的函数。以下是我的代码。

fn main() {
    let line_1: (f64, f64) = (-2.0, 9.5);
    let line_2: (f64, f64) = (1.0, -2.0);

    let x_1: f64 = (line_2.1 - line_1.1) / (line_1.0 - line_2.0);
    let y_1: f64 = line_1.0.mul_add(x_1, line_1.1);

    let x_2: f64 = (line_1.1 - line_2.1) / (line_2.0 - line_1.0);
    let y_2: f64 = line_2.0.mul_add(x_2, line_2.1);

    println!("x_1: {}, y_1: {}", x_1, y_1);
    println!("x_2: {}, y_2: {}", x_2, y_2);
}

数学上x_1与x_2相等,y_1与y_2相等。相反,这是打印的价值。

x_1: 3.8333333333333335, y_1: 1.833333333333333
x_2: 3.8333333333333335, y_2: 1.8333333333333335

该值不应该包含五个,而y_1值与y_2不同。这是某种错误,还是我在处理浮动数据时遇到的一些步骤?

0 个答案:

没有答案