【问题标题】:Dividing two integers to produce a float result [duplicate]将两个整数相除以产生浮点结果[重复]
【发布时间】:2012-09-16 13:39:31
【问题描述】:

可能重复:
Why can't I return a double from two ints being divided

即使我尝试将输出放入浮点数中,我的 C++ 程序也会截断整数除法的输出。如何在将变量 (a & b) 保持为整数的同时防止这种情况发生?

user@box:~/c/precision$ cat precision.cpp
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
  int a = 10, b = 3;
  float ans = (a/b);
  cout<<fixed<<setprecision(3);
  cout << (a/b) << endl;
  cout << ans << endl;
  return 0;
}

user@box:~/c/precision$ g++ -o precision precision.cpp 
user@box:~/c/precision$ ./precision 
3
3.000

【问题讨论】:

  • float ans = ((float)a/b); (或 static_cast 取悦纯粹主义者)
  • 是的,我的错误,我确实搜索过,但我没有找到那个帖子。这是一个骗局,我的错!

标签: c++ precision integer-division


【解决方案1】:

将操作数转换为浮点数:

float ans = (float)a / (float)b;

【讨论】:

  • 另外,浮点数只有这么高的精度。您的整数除法可能需要 double 的“双精度”
  • 严格来说,您只需要将一个整数转换为浮点数,尽管这确实使其更加清晰。
  • INT K; K/3; 这里/ 将调用INT 类,那么投一个int 甚至提名或分母都可以工作的原因是什么?
  • 由于我们在这里使用C++,所以使用static_cast。请注意,可以使用类型划分规则,就像float ans = static_cast&lt;float&gt;(a)/b;
  • 绝对的疯子!谢谢你的支持。
猜你喜欢
  • 1970-01-01
  • 2013-06-05
  • 2014-09-29
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多