gpt4 book ai didi

c++ - 在任何情况下都可以使用整数或 float ?

转载 作者:行者123 更新时间:2023-11-28 07:27:38 25 4
gpt4 key购买 nike

将关于整数和 float 的相对优点的讨论转移到一个单独的问题中。这是:在既不是固有整数也不是固有 float 的情况下,您更喜欢整数类型还是浮点类型?例如,在为控制良好的比例范围开发几何引擎时,您更喜欢最小可行单位的整数坐标还是浮点/ double 坐标?

最佳答案

偏爱 float 的一些原因是:

  • 当您以定点格式相乘时,乘积具有新的比例,因此必须对其进行调整,或者必须编写代码来说明更改后的比例。例如,如果采用按 100 缩放的格式,则 .3 表示为 30,.4 表示为 40,则 30 乘以 40 得到 1200,但相同比例的正确答案应为 12(表示 .12 ).部门需要类似的调整。
  • 当整数格式溢出时,许多机器和编程语言无法很好地支持获取结果的最重要部分。 float 自动产生结果的最高有效部分并四舍五入丢弃的位。
  • 整数运算通常会截断分数,但 float 会对其进行舍入(除非另有要求)。
  • 一些计算涉及很大范围的数字,包括非常大和非常小的数字。定点格式的范围较小,而浮点格式的范围较大。您可以使用定点格式手动跟踪刻度,但那样您只是使用整数实现您自己的 float 。
  • 许多机器和/或编程语言忽略整数溢出,但 float 可以优雅地处理这些溢出和/或在它们发生时提供通知。
  • 浮点运算定义明确且通常实现良好;其中的错误已经减少(有时是通过痛苦的经历)。构建新的自己动手的算法很容易出现错误。
  • 对于某些函数,很难提前预测结果的尺度,因此使用定点格式很尴尬。例如,考虑正弦。只要输入接近 π 的倍数,正弦就接近于零。由于 π 是无理数(且超越数),因此整数或定点数接近 π 倍数的模式非常不规则。一些定点数不接近 π 的倍数,它们的正弦约为 0.1、0.5、0.9 等。一些定点数非常接近 π 的倍数,它们的正弦值接近于零。一些非常接近 π 的倍数,并且它们的正弦很小。因此,没有合理精度的定点格式可以始终返回正弦结果而不会下溢或上溢。

喜欢整数的一些原因是:

  • 整数运算在特定硬件上可能更快或具有更大的吞吐量。
  • 整数运算为相同位数提供更高的精度。
  • 在某些语言实现中,对整数运算的某些支持可能会更好。例如,默认设置或具有高精度设置的低质量软件可能会错误地显示浮点值,但软件很少会错误地打印整数值。

我考虑过列出整数算术的某些“特征”作为使用它的原因的方法,但是,经过检查,它们不是实际特征:

  • 有人可能会说整数运算在溢出之前是精确的。但这是错误的,因为整数算术或定点算术(带标度的整数算术)并不精确。给定年利率计算月利息通常是不准确的。货币之间的转换并不准确。物理计算并不准确。坐标缩放不准确。
  • 就整数运算在溢出之前是精确的而言,它不是一个特性。大多数机器允许整数运算在没有警告的情况下溢出。所以,当整数运算失败时,它会失败得惊人。 (使用 IEEE 754 浮点,您可以设计精确的算法并在出现不精确时请求陷阱或标志。)

关于c++ - 在任何情况下都可以使用整数或 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18434108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com