最近我一直在学习一些C ++,但我遇到了一个难题:
众所周知,'int'数据类型用于保存整数和整数,而'float'数据类型用于定义包含实数和小数的变量。但是,我发现我可以轻松地将一个整数放入'float'数据类型的变量中,从而无需使用'int'类型?
如果是这种情况,为什么我会继续在'float'上使用'int'数据类型?使用后者会更方便......它会被认为是不良形式吗?
答案 0 :(得分:1)
一些原因:
int
几乎普遍更有效率int
允许逐位操作int
是main()
答案 1 :(得分:1)
在算术计算中,它被认为比int慢 由于他们的岁差,你不可能在比较中使用花车。 (read more here)
这也是一篇好文章:
历史上,浮点可能比整数慢得多 算术。在现代计算机上,情况已经不再如此(它 在某些平台上有点慢,但除非你写得很完美 为每个周期编码和优化,差异将被淹没 代码中的其他低效率。)
在有限的处理器上,如高端手机中的处理器, 浮点数可能比整数慢一些,但通常都是这样 只要有硬件,在一个数量级(或更好)内 浮点可用。值得注意的是,这种差距正在缩小 随着手机越来越多地运行,手机也越来越快 一般计算工作量。
在非常有限的处理器(便宜的手机和烤面包机)上 一般没有浮点硬件,所以浮点运算 需要在软件中进行模拟。这很慢 - 几个订单 幅度比整数算术慢。
正如我所说,人们期待他们的手机和其他设备 表现得越来越像“真正的计算机”和硬件设计师 正在迅速加强FPU以满足这一需求。除非你在追逐 每个最后一个周期,或者您正在为非常有限的CPU编写代码 很少或没有浮点支持,性能区别 对你没关系。
我建议你阅读整篇文章,以清楚地了解他们的区别。
答案 2 :(得分:1)
除了在其他答案中提到的效率问题之外,您还应该意识到使用float实际上不如int更直观。
为了进行比较,你几乎不应该做像
这样的事情if (aFloat == anotherFloat) { ...
您需要了解并非所有十进制值都可以用浮点数精确表示。