C ++计算基于赔率的游戏的支付

时间:2018-05-17 14:15:07

标签: c++

过去几周我一直试图将一个双倍(例如2.76)乘以一个int来产生结果,但最终结果总是向上舍入为一个int当然并且double并不总是精确到我们已经知道了。我不是专家,而且我从来没有必须在使用C ++之前诚实地面对精确数学我已经习惯了PHP。因为我确信这是过度询问(我在这里搜索并搜索但是没有提出任何解决方案 - 也许我不能正确理解它);有人会介意伸手吗?

示例代码:

#include <stdio.h>
#include <iostream>
#include <cmath>

double decdouble = 2.72;
int multiby = decdouble * 10127;
couut << "Result: " << multiby << endl;

现在,如果我只想输出到stdout,我想可以使用setprecision(),但是我需要在代码的其他区域引用它,我不确定我能够指定保存到变量的精度。

提前多多感谢。

1 个答案:

答案 0 :(得分:3)

你需要使用double而不是int来进行乘法运算,因为结果是精确的,因为int会从乘法中返回最接近int的数字。

#include <iostream> /// you don't really need the other libraries you included

using namespace std; /// use this namespace to avoid std:: for each line

int main() /// if you want your code to run, add it in the main() function
{
  double decdouble = 2.72;
  double multiby = decdouble * 10127; /// use double, not int for a precise result
  cout <<"Result: "<< multiby << endl;
  return 0;
}