小编k-d*_*-dx的帖子

使用和不使用命名空间 std 的 C++ 长双精度差异;

我偶然发现了我无法解释的奇怪的 C++ 行为。

我试图在调整图像大小(保持其比例)以适应尽可能多的屏幕时计算图像的尺寸。x、y 变量是图像的尺寸,X、Y 变量是屏幕的尺寸。当结果维度不是整数时,我需要使用标准数学规则对它们进行舍入。

这个输入程序499999999999999999 10 1000000000000000000 19给出了(错误的)答案950000000000000000 19

#include <iostream>
#include <cmath>
#include <algorithm>

int main()
{
    long long x, y, X, Y;
    std::cin >> x >> y >> X >> Y;

    long double ratio = std::min((long double)X/x, (long double)Y/y);

    x = round(ratio*x);
    y = round(ratio*y);

    std::cout << x << " " << y << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,下面的代码(仅更改并从函数体中using namespace std;删除)给出了正确的答案。std::main949999999999999998 19

#include <iostream>
#include <cmath>
#include …
Run Code Online (Sandbox Code Playgroud)

c++ std

2
推荐指数
1
解决办法
107
查看次数

标签 统计

c++ ×1

std ×1