限制浮点精度?

有没有办法将浮点数舍入为2分? 例如: 3576.7675745342556变为3576.76

 round(x * 100) / 100.0 

如果你必须保持浮动:

 roundf(x * 100) / 100.0 

使用标准库函数的灵活版本:

 double GetFloatPrecision(double value, double precision) { return (floor((value * pow(10, precision) + 0.5)) / pow(10, precision)); } 

如果要打印出来,请使用可用的任何打印格式化function。

在c ++中

 cout << setprecision(2) << f; 

要舍入以渲染到GUI,请使用std :: ostringstream

乘以100,舍入为整数(无论如何你想要),除以100.注意,由于1/100不能在浮点中精确表示,因此请考虑保持固定精度的整数。

不要使用浮子。 如果要打印美元,请使用存储分数的整数并在最后2个位置前打印小数点。 浮动几乎总是错误的 ,除非你进行简单的计算(如天真的经济数学模型),其中只有数字的大小真正重要,你永远不会减去附近的数字。

对于那些谷歌搜索格式化浮动到钱像我一样:

 #include  #include  #include  std::string money_format (float val) { std::ostringstream oss; oss << std::fixed << std::setfill ('0') << std::setprecision (2) << val; return oss.str(); } // 12.3456 --> "12.35" // 1.2 --> "1.20" 

您必须将其作为字符串返回。 将它放回浮子会失去精度。

限制精度:
如果x是浮点数,则不进行舍入:
(向上移动2位小数,剥离分数,向下移动2位小数)

 ((int)(x*100.0)) / 100.0F 

漂浮与四舍五入:

 ((int)(x*100.0 + 0.5F)) / 100.0F 

双w / o舍入:

 ((long int)(x*100.0)) / 100.0 

双w /舍入:

 ((long int)(x*100.0 + 0.5)) / 100.0 

注意:因为x是floatdouble float ,所以小数部分将始终存在。 它是如何表示#( IEEE 754 )和#的精度之间的区别。
C99支持round()

试试用

std::cout<

应该有效,浮点出现后只有2位数。

试试这个,它完美无缺

 float=3576.7675745342556; printf("%.2f",float); 

更改其中的一些对象以查看和学习代码。

 yourFloatNumber= Float.Round(yourFloatNumber,2); // In C#