设置小数点后的位数
我有一个浮点数,例如 12.12123 有没有一个函数可以只显示小数点后2位数字 12.12?
代码如下:
y1 = ( c1 - (a1 * x)) / b1;
y2 = ( c2 - a2 * x) / b2;
if (y1 == y2)
cout << "The same";
因此,如果 y1 = 1.001 和 y2 = 1.002,它们看起来并不相同。
我尝试添加。 cout.setf(ios::fixed, ios::floatfield); cout.精度(2);
但这似乎没有帮助。
I have a float number for example 12.12123
Is there a function which would display only number with 2 digits after decimal point
12.12 ?
Here is the code:
y1 = ( c1 - (a1 * x)) / b1;
y2 = ( c2 - a2 * x) / b2;
if (y1 == y2)
cout << "The same";
so if the y1 = 1.001 and the y2 = 1.002 they do not appear as the same.
I tried to add.
cout.setf(ios::fixed, ios::floatfield);
cout.precision(2);
but it does not seem to help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
在 C 中,如果没有足够的数字可供打印,则会自动在右侧添加 0 填充。
在 C++ 示例中,此功能被禁用;要启用此行为,您应该使用std::fixed
(或使用std::ios_base::setf()
)。编辑: I记错了;如果未设置
fixed
,则precision
设置向流表示要显示的总位数,还包括小数点之前的位数。因此,在这种情况下,我认为唯一的方法是使用固定模式(固定示例),这将产生与 printf 相同的行为。链接:
In C, the 0 padding is added automatically to the right if there are not enough digits to print.
In the C++ examples, instead, this is disabled; to enable this behavior, you should enable the fixed mode on the stream withstd::fixed
(or enabling the relevant stream flags withstd::ios_base::setf()
).Edit: I remembered wrong; if
fixed
is not set, theprecision
setting says to the stream the total number of digits to display, including also the ones before the decimal point. So, in this case I think that the only way is to use thefixed
mode (examples fixed), which will yield the same behavior ofprintf
.Links:
您正在寻找
printf("%.2f", 12.12123);
或:编辑: 问题已更改,答案也已更改。
您永远不想对浮点使用直接相等,您总是在 epsilon 容差范围内进行比较。您的
epsilon
相当大。将
if (y1 == y2)
替换为if (abs(y1 - y2) <0.01)
。You're looking for
printf("%.2f", 12.12123);
or:EDIT: Question changed, so does the answer.
You never want to use direct equality with floating point, you always compare within epsilon tolerance. Your
epsilon
is just quite large.Replace
if (y1 == y2)
withif (abs(y1 - y2) < 0.01)
.这将打印 1.46
This would print 1.46
您可能问错了问题。尝试以下操作:
You are probably asking wrong question. Try following: