如何更改号码的精度,例如:float n = 1.2345
并将其存回变量'n'并将其更改为1.23
?更改号码精度
更改号码精度
回答
float n = 1.2345;
int scaled = n * 100
n = static_cast<float>(scaled)/100.0;
或一条线:
n = static_cast<float>(static_cast<int>(n*100))/100;
我也有类似的问题[这里](http://stackoverflow.com/questions/35258164/how-to-prevent-numbers-from-showing-up-in-scientific-notations)如果可能,你可以帮助我出去了? – user1950349 2016-02-14 17:05:17
#include <cmath>
n = roundf(n * 100.0f)/100.0f;
,或者如果您需要截断而不是圆:
n = truncf(n * 100.0f)/100.0f;
只需要注意一点:这会舍入浮点数而不是截断它,这可能是也可能不是Dave18正在寻找的。 – 2010-06-18 13:43:02
@Bill:的确 - 我正在更新它,以便在您添加评论的同时包含截断的可能性。 ;-) – 2010-06-18 13:47:12
float truncated = static_cast<int>(n * 100)/100.0f
应该工作。
看一看这个问题:
Rounding Number to 2 Decimal Places in C
然而,在C++中,如果你需要把一个数字显示目的,我不会使用printf
,但使用流操作符:
using namespace std;
cout << setiosflags(ios::fixed) << setprecision(2);
cout << n;
奇怪的是,这是downvoted,当它是唯一的答案提及显示的目的,这可能是OP的用例! +1。 – Cascabel 2010-06-18 13:50:47
@Jefromi:是的,不知道为什么这是downvoted。我希望downvoter会做出解释。 Thx为upvoting! – 2010-06-18 14:01:04
- 1. Sass号码精度和webpack
- 2. Android更改位置精度
- 3. 更改浮点型精度
- 4. 向BigDecimal号码加1的精度?
- 5. Android更改号码为主号码
- 6. 需要更改浮点精度
- 7. 根据等级更改精灵难度
- 8. 更改精度值,并使用Tensorflow
- 9. Corona SDK动态更改精灵速度
- 10. 更改号码的问题
- 11. JQuery动态更改号码
- 12. 中等更改号码
- 13. 月份更改号码
- 14. SSIS加载列号(精度,标度)
- 15. 如何将进度条的值更改为双精度?
- 16. Keras精度不会改变
- 17. _controlfp不改变精度
- 18. 改变时钟的精度
- 19. 更新号码:调度客户端时eventmodel改变
- 20. 无效号码。数字被限制在32位精度
- 21. 如何首先通过代码全局更改精度和小数位数?
- 22. Magento的变更订单号码长度
- 23. 更高精度的Android加速度计
- 24. Cocos2d更改精灵目标
- 25. 更改小精灵位图
- 26. 以逗号掩盖小数点精度
- 27. C中无符号双精度?
- 28. PHP INTVAL()更改号码不2147483647
- 29. 更改电话号码 - Android开发
- 30. 号码自动更改为字符串
这听起来像也许你问如何将数字舍入?你会发现很多以前的问题,如果你搜索。 – Cascabel 2010-06-18 13:28:15
你想整理数字或截断它们吗?当n = 1.246时会发生什么? – 2010-06-18 13:33:21
是的,截断数字并将其放回变量'n'。 – cpx 2010-06-18 13:33:56