【问题标题】:ANSI C: How to convert a float value into a short variableANSI C:如何将浮点值转换为短变量
【发布时间】:2016-08-30 08:47:38
【问题描述】:

对不起这个简单的问题,但我怎样才能转换 f.e. 29.4 到 0x0DBE 和 -12 到 0x8350。

int ss_bat_temp = 294;    //a temperatur in 0.1 Celsius
fvalue = (float) ss_bat_temp / 10; 
short svalue = (short)(fvalue);

但它不起作用。

结果是 0x001D 而不是 0x0DBE。有什么问题?

有人可以帮我吗?

【问题讨论】:

  • 你为什么期待0x0DBE
  • 这听起来对我来说是正确的。 294.0 / 1029.4,将其转换为整数会将其截断为 29,即 0x1d
  • 您的代码工作正常,它给出了 0x1d 的预期结果。你为什么期待 0x0DBE ?
  • 抱歉,我们不清楚 0x0DBE 如何是 29.40 的正确值,您必须解释一下。
  • 如果您能告诉我们为什么您想要这个也会很有帮助?您要解决的实际问题是什么?请阅读the XY problem

标签: c


【解决方案1】:

浮点数是 8 字节长,短是 4(我认为)。从浮点数转换为短时,您会丢失一些信息,因为您必须将其缩小。

【讨论】:

    猜你喜欢
    • 2023-03-02
    • 2019-04-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多