代码之家  ›  专栏  ›  技术社区  ›  yCalleecharan

混合型计算中的C?

  •  3
  • yCalleecharan  · 技术社区  · 16 年前

    double x0, xn, h;
    int n;
    

    我有一个数学表达式:

    h = (xn - x0)/n;
    

    有必要在除法之前把n转换成double吗

    h = (xn - x0)/ (double) n;
    

    4 回复  |  直到 16 年前
        1
  •  3
  •   Tyler McHenry    16 年前

    你的理解是正确的,你读的书要么是错误的,要么是过于谨慎(就像那些声称你应该经常测试的人一样) 0 == x 而不是 x == 0

        2
  •  2
  •   rlbond    16 年前

    不,这个转换是不必要的,因为分子是一个 double . 这促进了 n 双重的 也。这本书可能提到了明确的演员阵容是一个好习惯,因为如果 xn x0 int 则表达式将只使用整数除法。

        3
  •  1
  •   Jerry Coffin    16 年前

    在这种情况下没有必要。在需要与操作数类型不同的结果的情况下,通常需要使用它。一个典型的例子是计时。您经常会遇到这样的代码: double(end_time-start_time)/CLOCKS_PER_SEC; 在这种情况下,确实需要强制转换,因为所有输入(通常)都是整数类型,但您需要浮点结果。

        4
  •  1
  •   TheCodeArtist    16 年前

    在C中,任何表达式的精度都与表达式中涉及的最高精度常量/变量相同。

    显式强制转换很有用:

    • 作为预防措施

    要使用int的表达式。演员阵容 仍将返回正确的值

    • 作为向导 .

    双重的 .