从而创建舍入函数
creating a rounding function
试图做一些真正简单的事情,但这让我头疼不已。
我需要写一个函数,将双参数的值四舍五入到n指定的小数位数。
我已经记下了大部分,但由于某种原因,结果=。。。。。只计算舍入算法的第一行(见下文)
结果不是四舍五入,而是简单地将小数点移动到n指定的位数。我的代码如下:
#include <iostream>
#include <cmath>
using namespace std;
double round(double x, int n)
{
double result;
result =
x * pow(10, n);
x = x + 0.5;
x = floor(x);
x = x / pow(10, n);
return result;
}
int main()
{
cout << round(-2.9, 0) << endl;
cout << round(-2.59, 1) << endl;
cout << round(.0059, 2) << endl;
cout << round(1.23467, 3) << endl;
cout << round(9.999999, 4) << endl;
return 0;
}
您的round()
返回result = x * pow(10, n)
,那么您还期望什么呢?
使用类似的东西可能会得到更好的结果
double round(double x, int n) {
x = x * pow(10, n);
x = x + 0.5;
x = floor(x) / pow(10, n);
return x;
}
问题是,在原始代码中,您分配了result = x * pow(10, n);
,但随后使用x
而不是result
继续执行其余所有操作。
您还可以组合一些语句来减少方法中的行数,甚至可以选择像return floor(x * pow(10, n) + 0.5) / pow(10, n);
这样的单行。这并不一定更好,但当你所做的只是数学时,你不需要在自己的行上执行每个运算。
相关文章:
- C++将浮点指针值舍入为小数位数
- Boost::posix_time::ptime舍入到给定的分钟数
- 浮点定向舍入和优化
- 为什么输出精度没有正确舍入?
- 使用设置精度时如何阻止数字向上舍入?
- 如何在使用 MPFR 时在提升多精度中设置舍入模式
- OpenCV 细分一致的 Rect2f 到 Rect2i 舍入
- C++ 中的舍入函数
- 舍入 QDecDouble 值,精度最多为两个字符
- 将大 int 转换为浮点数,而不舍入 c++
- 如何在不复制此代码的情况下将多个函数放入多个命名空间?
- 舍入错误检测
- 我应该在 stoi() 函数中放入多少位
- 是否可以为 AVR 编写一个 constexpr 舍入函数?
- 在C++函数中发生奇怪的舍入
- 我可以用标准库组件构建这个特殊的舍入函数吗
- 在C++中使用地板函数的舍入误差
- 分析文件中的数据后使用舍入函数
- 从而创建舍入函数
- 是否有标准的格式化函数或运算符进行舍入?(?)