我得到的结论是 只有=右边的结果不超出左边的数据类型的范围就不会有问题
float f = 123.456;
uchar a = 0, b = 0, c = 0;
a = f; //a = 123
a = (uchar)f; //a = 123
f = f - a;
f = f * 1000; //f = 456.0013 仿真结果
b = (uchar)f; //456 超出uchar的范围 所以有问题 b = 456 % 256 = 200
b = (uchar)(f / 100); // b = 4
b = (f / 100); // b = 4
b = (uchar)((uint)f / 100); // b = 4
a = f / 100; //a = 2
b = (int)f % 100 /10; //b = 3
c = (int)f % 10; //c = 4
以上为个人见解,有问题欢迎大家指出来。
[ 本帖最后由 upc_arm 于 2012-2-19 18:04 编辑 ]
|