【发布时间】:2015-10-11 17:51:05
【问题描述】:
我想从一个具有设定精度的函数返回一个双精度值!这可能吗?我想要 10-5 的准确度!
例如:
double f(double a ,double b)
{
//something like return.setprecision(6);
return (a+b)/2;
}
【问题讨论】:
-
你的意思是截断到 n 位小数吗?那有什么用?
-
Double 是二进制的。你不能准确地将它四舍五入到一定的小数位数,会有四舍五入的问题。因此,您需要说出您想要实现的目标,以获得正确的解决方案。
-
@hyde:关于“double 是二进制”,在当前的 PC 计算机上在实践中就是这样。 C++ 标准允许二进制和十进制浮点表示。然而,整数类型仅限于二进制。
-
@Cheersandhth.-Alf - 现代计算机以二进制形式存储内容。要显示它 - 它将其转换为另一种表示形式 - 通常是 ASCII。 (这也是二进制)。
-
@Cheersandhth.-Alf 关于 C++ 中(缺乏)标准浮点数的观点很好(如果有点高级主题并且与 OP 实际上无关),毕竟甚至可以启用积极的浮点优化可能会破坏为 IEEE 标准浮点编写的计算...