当前位置:  开发笔记 > 编程语言 > 正文

拆分两位数字

如何解决《拆分两位数字》经验,为你挑选了1个好方法。

我尝试分割任意数量的两位数,并得到两个不同变量的结果.我遇到了一个特定数字的问题: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操作,我在最终结果中遇到了一些麻烦.我错过了什么或者没有抓到什么东西?



1> rom1v..:

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

代替:

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

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有