我尝试分割任意数量的两位数,并得到两个不同变量的结果.我遇到了一个特定数字的问题:23
.
int root = 23; float div = (float)root/10.0; // div = 23.0/10.0 = 2.3 int left = (int)div; // left = 2 int right = ((float)div - (float)left) * 10.0; // right = (2.3 - 2) * 10.0 = 0.3 * 10.0 = 3 printf("%d", right); // 2, why ?
有很多float-to-int操作,我在最终结果中遇到了一些麻烦.我错过了什么或者没有抓到什么东西?
由于0.3可能无法用二进制表示,因此最终会得到2.9999 ... 2
转换为a时会变为int
.
代替:
int root = 23; int left = root / 10; int right = root % 10;