c++ - 将小数舍入为 2 位 C++ 之间的逻辑

标签 c++ decimal

<分区>

我最近遇到了以下一段代码来显示 2 个十进制数字。

val = ((int)(val*100.0))/100.0

结果如前所述,但我不明白其运作背后的逻辑。谁能解释一下。 谢谢。

最佳答案

如果实际代码看起来像这样:

float val = 3.141592654;
val = ((int)(val * 100.0)) / 100.0; // result would be 3.14

那么其背后的逻辑就是转换为整数会截断小数点。所以乘以 10^n(其中 n 是你想要的小数位数)然后转换它会将小数点向右移动 n 位,然后删除剩余的小数点。然后,将其转换回 float 并除以 10^n 以获得所需的结果。

关于c++ - 将小数舍入为 2 位 C++ 之间的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18316160/

相关文章:

sql-server - 在不同 SQL 服务器上将日期时间转换为小数时的差异

java - 将字符串数字格式化为小数点后两个数字的 double 变量

c# - 如何使用 decimal.MaxValue 进行测试?

c++ - 在 C++ 中删除指针数组时析构函数崩溃

mysql 小数点四舍五入

mysql - 为什么 sum() 查询返回带有更多小数点的结果?

c++ - STL 设置自定义排序

c++ - CallWindowProc 在退出时崩溃

C++:abs有什么问题

C++11 : Why is the copy ctor being called here?