如何在C中四舍五入浮点值(如37.777779)到小数点后两位(37.78)?
当前回答
...或者你也可以采用传统的方式,不需要任何库:
float a = 37.777779;
int b = a; // b = 37
float c = a - b; // c = 0.777779
c *= 100; // c = 77.777863
int d = c; // d = 77;
a = b + d / (float)100; // a = 37.770000;
当然,如果你想从数字中去除额外的信息。
其他回答
使用%。printf中的2f。它只打印2个小数点。
例子:
printf("%.2f", 37.777779);
输出:
37.77
另外,如果你使用c++,你可以创建一个这样的函数:
string prd(const double x, const int decDigits) {
stringstream ss;
ss << fixed;
ss.precision(decDigits); // set # places after decimal
ss << x;
return ss.str();
}
然后你可以输出小数点后n位的任何double myDouble,代码如下:
std::cout << prd(myDouble,n);
你仍然可以使用:
float ceilf(float x); // don't forget #include <math.h> and link with -lm.
例子:
float valueToRound = 37.777779;
float roundedValue = ceilf(valueToRound * 100) / 100;
这个宏用于浮点数四舍五入。 把它添加到你的头文件中
#define ROUNDF(f, c) (((float)((int)((f) * (c))) / (c)))
这里有一个例子:
float x = ROUNDF(3.141592, 100)
X = 3.14:)
这个怎么样:
float value = 37.777779;
float rounded = ((int)(value * 100 + .5) / 100.0);
推荐文章
- 如何显示有两个小数点后的浮点数?
- IEEE 754浮点数不能精确表示的第一个整数是哪一个?
- c++中size_t和int的区别是什么?
- 在C和c++中静态变量存储在哪里?
- errno线程安全吗?
- 如何在C程序中获取当前目录?
- 互斥实例/教程?
- 如何添加一个'或'条件在#ifdef
- extern关键字对C函数的影响
- 如果使用if-return-return或if-else-return?
- 用于双值的assertEquals的delta或epsilon参数的含义
- 转换Python程序到C/ c++代码?
- 为什么程序不是经常用汇编编写的?
- 有没有替换Windows (Visual C)的unistd.h ?
- 使用gcc命令行从.c文件构建.so文件