CodeSOD:火热进行中
由于性价比高且节能,分体式空调系统在老房改造中广受欢迎,但其对红外遥控器的依赖使得与家庭自动化系统的集成变得复杂。 一个常见问题源于这些系统内部的温度转换逻辑,特别是在摄氏度与华氏度之间转换时。一个试图将分体式空调集成到家庭自动化系统中的开源项目,揭示了其温度转换方法存在缺陷。该项目的代码使用查找表来实现摄氏度与华氏度之间的转换。这些查找表包含特定的、往往不准确的映射关系,导致与标准转换公式存在偏差。例如,18°C被错误地映射为65°F,而非更准确的64°F(四舍五入后)。 这些查找表的设计表明,其目的是对转换值进行近似处理,而非进行精确的数学计算。作者最初认为这是该业余项目的一种天真的优化尝试,但代码中的一条注释澄清说,这些是“基于遥控器的直接映射”。这表明,不准确之处源于遥控器本身。 遥控器很可能因其嵌入式微控制器的限制而使用查找表,该微控制器可能无法高效处理浮点运算。因此,当用户在遥控器上设置 72 华氏度(72F)等温度时,遥控器会在将命令发送至设备前,先在内部将其转换为近似摄氏度值(例如 22.5°C)。这种近似虽然在大多数情况下“足够好”,但会导致精密自动化出现不一致的情况。 作者认为,根本问题并不在于这个业余项目的代码或遥控器本身,而在于全球范围内持续使用非标准单位(华氏度),这导致了这些不精确的转换。