c++ - 将 int 转换为 double 会丢失精度吗?
问题描述
我正在尝试一个非常简单的程序,并且当 int 转换为 double 时,我不理解明显的精度损失。
void collinear(int x1, int y1, int x2,
int y2, int x3, int y3)
{
int a = (x1 * (y2 - y3)) +
(x2 * (y3 - y1)) +
(x3 * (y1 - y2));
if (a == 0)
cout << "Yes";
else
cout << "No";
}
这是带有double
void collinear(double x1, double y1, double x2,
double y2, double x3, double y3)
{
double a = (x1 * (y2 - y3)) +
(x2 * (y3 - y1)) +
(x3 * (y1 - y2));
if (a == 0.0)
cout << "Yes";
else
cout << "No";
}
鉴于此输入,这两个程序的行为不同,我不明白为什么
collinear(0,0,94911150,94911151,94911151,94911152);
双打节目:是的
带整数的程序:否
用纯数学计算的答案也是No
. 双打的程序是否会失去精度?
解决方案
推荐阅读
- arduino - 'dht' 没有命名类型
- css - 如何使底部边框从左侧增长并最小化到右侧?
- flutter - 如何在 Flutter 中隐藏 webview 中的元素。?
- laravel - vuetify.js 如何将 type="submit" 添加到 Loaders Button
- vue.js - vuejs调试错误“无法读取未定义的属性'id'”
- python - 尝试将 win32ui 与 pywin32 一起使用会给出:动态链接库 (DLL) 初始化例程失败
- python - I am making a game in pygame and I want it to spawn a thing multiple times
- flutter - 长文本抛出异常
- c++ - 在没有对象实例化的情况下调用成员函数是未定义的行为吗?
- reactjs - 有没有办法将 svg 添加到我的 img 标签?即使 svg 的路径正确,svg 也不会显示