【发布时间】:2010-10-26 11:35:31
【问题描述】:
我创建了一个结构来表示一个定点正数。我希望小数点两边的数字由 2 个字节组成。
typedef struct Fixed_t {
unsigned short floor; //left side of the decimal point
unsigned short fraction; //right side of the decimal point
} Fixed;
现在我想添加两个定点数,Fixed x 和 Fixed y。为此,我将它们视为整数并相加。
(Fixed) ( (int)x + (int)y );
但正如我的 Visual Studio 2010 编译器所说,我无法在 Fixed 和 int 之间进行转换。
这样做的正确方法是什么?
编辑:我不致力于固定的{short floor, short fraction} 实现。
【问题讨论】:
-
更好地使用 int 来存储您的固定值(可能 typedef'd 到其他东西)并使用移位和按位运算来提取值的整数和小数部分。这并不完全符合标准,但比将 struct 转换为 int 更便携。
-
@Vova:谢谢,这就是我最终所做的。
标签: c struct fixed-point