【问题标题】:conversion from 'double' to 'int' in VS2010 C++VS2010 C++中从'double'到'int'的转换
【发布时间】:2013-05-31 04:54:54
【问题描述】:

我一生中第一次使用 Visual Studio 2010 来完成学校作业......到目前为止,它非常简单,但我在尝试将“double”转换为“int”时遇到了麻烦。我知道trunc()round() 在VS2010 中都不起作用,但是我不确定我还能如何做到这一点......这是我的代码:

double q = double floor((p+r)/2);
q = (int) q;
mergeSort(v,p,q);

mergeSort(v,q+1,r);

merge(v,p,q,r);

我需要将变量 q 设为 int 以便与我的其余代码一起使用...但是,由于出现这些错误,因此强制转换似乎不起作用:

warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data

我知道这些只是警告,但我的代码仍然失败......还有其他方法吗?

【问题讨论】:

  • 那根本不应该编译,= 右边的double 是什么?
  • 你为什么在这个计算中使用浮点数?与ints 合作就可以了。
  • 如果我把它关掉,我会收到以下错误error C2668: 'floor' : ambiguous call to overloaded function .... could be 'long double floor(long double) or 'float floor(float)' or 'double floor(double)
  • 在这种情况下,您没有正确复制/粘贴代码。问题中的代码将给出另一个错误。一个正确的错误,而不是像您的问题中那样的 警告

标签: c++ visual-studio-2010 int double type-conversion


【解决方案1】:

如果您将 double 转换为 int,您将始终丢失数据,这就是警告的含义。由于您知道这确实是所需的结果,因此您可以忽略该警告。 但是,您应该使用

static_cast<int>(q)

而不仅仅是(int)q;

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2020-04-05
    相关资源
    最近更新 更多