相关疑难解决方法(0)

将数字舍入到C中的2个小数位

如何将浮点数(例如37.777779)舍入到C中的两位小数(37.78)?

c floating-point decimal

201
推荐指数
10
解决办法
70万
查看次数

当从 float 转换为 double 时,如何防止 c++ 添加额外的小数(不适用于 IO)?

我面临的问题是因为我正在使用一个库,当输入 a 时float,它会在内部执行一些操作,将 float 转换为 double 并向不正确的数字添加很多小数。我的意思是,根据双打和浮点数的表示方式以及投射时自然发生的情况,这是正确的,但它不适合我的应用程序。我有16.3asfloat并且我需要它是16.3as double

我试图在将值传递给库之前将浮点数转换为 double 以控制该转换,但到目前为止我还没有找到一种简单的方法。我只是想知道是否有可能从float到投射 16.3double并得到相同的 16.3 结果。

float f_var = 16.3;            // f_var is 16.3
double d_var = (double)f_var;  // d_var shall be also 16.3, not 16.299999237060547
Run Code Online (Sandbox Code Playgroud)

在 C++ 中是否有正确的方法来做到这一点?或者我必须做类似的事情:

char float_buf[10];
float f_var = 16.3;
sprintf(float_buf, "%.2f", f_var);
double d_var = atof(float_buf);
Run Code Online (Sandbox Code Playgroud)

因为这是可行的,但我想看看在 C++ 中是否有一种“正确”的方法来做到这一点。

SO 中有另一个建议的解决方案,但它涉及乘法和除法,我也想避免。

这不是用于显示或任何输入/输出操作或转换为字符串,我知道如何做到这一点并且有很多关于它的信息。此外,我并不是想理解“为什么”会发生这种情况,还有很多关于此的信息。

另外,SO中可能导致这个问题被标记为重复的大多数答案都不是针对C++的,它们主要是针对C#、Java JS、Objective C等的。对于我发现的关于C/C++的少数答案,大多数都是针对C/C++的。正在用printfor处理 IO 的这个问题,cout其他人只解释为什么会发生这种情况,这也是没有用的。如果您确实有一个完全用 …

c++ precision

-1
推荐指数
1
解决办法
936
查看次数

标签 统计

c ×1

c++ ×1

decimal ×1

floating-point ×1

precision ×1