【问题标题】:How do I separate digits from a double and store them as an int in C?如何将数字与双精度数分开并将它们作为 int 存储在 C 中?
【发布时间】:2014-12-04 21:52:15
【问题描述】:

假设我有一个双重如下:

double aDouble = 15.6;    

我想将其转换为三个 int,如下所示:

int x = 1;
int y = 5;
int z = 6;

我该怎么做呢?

【问题讨论】:

    标签: c embedded


    【解决方案1】:

    因为这看起来像家庭作业,所以我给你两条线索。

    1. 15.6 = 1 * 10 + 5 * 1 + 6 * 0.1
    2. 从 double 转换为 int 会破坏 double。

    你应该能够解决剩下的问题。

    【讨论】:

      【解决方案2】:
      double aDouble = 15.6;
      int tmp = aDouble*10;
      int x, y, z;
      x = tmp/100;
      tmp -= x * 100;
      y = tmp/10;
      tmp -= y * 10;
      z = tmp;
      

      【讨论】:

      • 一点启发可能会很好地解释为什么这可以保证工作。刚刚检查了C标准。一方面,浮点到整数被定义为删除小数部分。您乘以整数 10,该整数将转换为该操作的双倍。如果不能准确表示,则将采用实现定义的方式取上方/下方最接近的值。 10可以精确表示,所以OK。但是 15.6 不能,如果“实现定义的方式”支持“下面”,我可能会得到 1; 5个; 5 在 x;是; z.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      • 2021-12-02
      相关资源
      最近更新 更多