【问题标题】:C++ multiply float by fractionC ++将浮点数乘以分数
【发布时间】:2020-06-20 21:27:56
【问题描述】:

刚从 MATLAB 背景开始使用 C++ 并感到困惑。

float farenheit, celcius;
cin >> farenheit;
celcius = (farenheit - 32) * (5 / 9);
cout << "Temperature (c): " << celcius;

为什么乘以 5/9 不能按预期工作,但这样做呢?:

float farenheit, celcius;
cin >> farenheit;
celcius = ((farenheit - 32) * 5) / 9);
cout << "Temperature (c): " << celcius;

谢谢!

【问题讨论】:

  • 5/9 自己产生什么?提示:它们都是整数。
  • 因为 C++ 中的 int/int 返回一个 int 值,要解决这个问题,您只需将 .0 附加到两个数字之一 (5 / 9.0);
  • 与 matlab 的一些大区别:整数运算,从 0 开始的数组。

标签: c++ floating-point multiplication fractions


【解决方案1】:

谢谢大家,

C++ 将59 解释为int 值,因此5/9 也是int。 5/9 = 0.566,被截断为0

要解决此问题,请将.0.f 附加到分别解释为双精度或浮点数的值。

【讨论】:

  • 我自己写了一个答案,但很高兴你在我发布之前就知道了。干得好。
  • 注意:附加.0 使值成为double,而.f 使其成为float。你和floats 一起工作,所以我会和那些不浪费 CPU 的人在一起。
  • 谢谢,@TedLyngmo。修改了我的答案。
【解决方案2】:

C++ 将 5 和 9 视为整数,除法为整数除法,即 5/9 = 0(返回商)。

因此,如果您希望它们是浮点数,请使用 5.0 和 9.0。

【讨论】:

    猜你喜欢
    • 2014-07-26
    • 2023-03-05
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多