拆分两位数字

时间:2017-01-20 15:52:39

标签: c floating-point decimal

我尝试分割任意数量的两位数,并得到两个不同变量的结果。我遇到了一个特定号码的问题: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 ?

有很多浮点到操作,最终结果我遇到了一些麻烦。我想念或者没有抓到什么吗?

1 个答案:

答案 0 :(得分:6)

由于0.3可能无法完全以二进制形式表示,因此最终会得到2.9999 ...转换为2时会变为int

相反:

int root = 23;
int left = root / 10;
int right = root % 10;