ceil函数描述的意外行为

时间:2017-03-15 18:07:46

标签: c++

#include<iostream>
#include<cmath>

int main()
{
long X;
std::cin >> X;
long f = ceil(X);
std::cout << f;
}

我正在使用gcc编译器(版本5.4.0)而不是四舍五入(ceil应该做什么,它会回答问题) 输入: 10.42 输出: 10(预期11)

1 个答案:

答案 0 :(得分:3)

long数据类型是不可或缺的;它不能存储分数组件。第std::cin >> X行在ceil看到该值之前截断小数部分。也就是说,当你调用ceil时,你传递的是10,而不是10.42。

long X;更改为double X;(或float X;)。

在使用浮点类型(floatdouble)之前,请阅读the floating point guide