定点数实现的是float转PEint
/// 浮点数有很多问题 多个平台一些运算结果不一致
/// 定点数 运算 (把浮点数转为定点数进行运算,保证所有平台结果的一致性)
//因为要把float转化为整形来操作
//float是一个结构体 所以我们这里也是声明的一个结构体(v3转PEv3也是结构体)
具体功能:
1.构造函数和显示转换(float转PEInt)、隐式转换(int转PEInt)
代码:
使用:
2.运算符重载:特别注意乘除和取反,右移
3.定点数的转化为原始(float or int)数据、Tostring和equal方法的重写
1.负数的移位预算问题
原理:负数右移运算的结果就是其原码取反得到反码,反码再加一。
上述代码模拟了护盾的效果,整数部分不相同(原始整数是通过右移得到的,而正数和负数的右移结果是不同的,也就是上述结果差1(不考虑符号的话)),需要对负数进行处理(对于负数:修改了Sourceint, *, >> :加上了对于负数的判断,把负数取反当成正数来处理)。
基于定点数实现的PEv3
PEcal:一些计算和钳制函数
结果公式
牛顿迭代求开方的代码:
钳制