zoukankan      html  css  js  c++  java
  • iOS Objective-C How to get 2 decimal rounded float value?

    Have you tried this?

    CGFloat val = 37.777779;
    CGFloat rounded_down = floorf(val * 100) / 100; /* Result: 37.77 */
    CGFloat nearest = floorf(val * 100 + 0.5) / 100; /* Result: 37.78 */
    CGFloat rounded_up = ceilf(val * 100) / 100; /* Result: 37.78 */
    source : Rounding Number to 2 Decimal Places in C
    Complementing: You just don't have control about how the computer will store the float value.
    So these rounded values may not be EXACTLY the "obvious" decimal values, but they will be very very close, and that's the max guarantee you will have.

    You do that in Objective-C exactly the same as you would in C:
    double notRounded = ...;
    double rounded = round (notRounded * 100.0) / 100.0;
    Don't use float - unless you can explain to someone exactly what your specific reasons are to use float over double. float has very limited precision. And using ceil or floor is daft, since there is a perfectly fine standard function named "round".
    Neither float nor double can exactly represent most decimal values, like 12.24. Because it has much higher precision, double will let you get much closer to 12.24. Therefore, there is a huge chance that NSLog will display some weird number for (float) 12.24, like 12.23999997394 or whatever, while it may display 12.24 for double.

  • 相关阅读:
    2021昆明站K-Riichi!!(麻将)
    数据结构 Week 3 --- dsu on tree 和 点分治
    数据结构 Week 2 --- 平衡树
    数据结构 Week 1 --- 从线段树到主席树
    一些思维题(三)
    一些思维题(二)
    2021ICPC昆明站总结及补题
    2021ICPC昆明M题 非主席树做法
    2020ICPC昆明参赛
    记5.28leetcode简单题
  • 原文地址:https://www.cnblogs.com/qike/p/4650335.html
Copyright © 2011-2022 走看看