Answers:
简短的答案是Go是C的后继产品,并且C的标准数学库几乎也完全根据单精度和双精度浮点值定义。
更长的答案是,在没有多态性或函数重载的静态类型语言(如Go(或C))中,您需要确定类型以使函数预先获取并返回,并且一旦处理完毕在数学库中的特定类型中,对浮点数的操作比整数要有趣得多。举几个例子
整数或浮点数的平方根或第n个根通常不能表示为整数
很少有超越函数的有趣值可表示为整数
浮点值除法比整数除法需要更少的舍入
请注意,如果您的输入值是整数,这并不像看起来那么繁琐-可以通过简单的类型转换(大多数情况下是准确的)将整数值转换为浮点值。
这就是Go或C等语言的故事。其他语言还有其他选择:
动态类型的语言可以提供数学库函数,这些函数可以使用或返回多种类型,这取决于调用它们的类型或返回值是否可表示为整数。
具有函数重载的语言可以提供相同功能的多个版本,具体取决于您传递的类型(严格来说,这些是具有相同名称的多个功能,与上述动态类型的情况不同)
具有多态类型的语言(例如具有继承性的面向对象的语言)可以定义超类“ Number”,其子类具有整数和浮点值,然后根据该Number类定义数学函数。这种方法具有动态语言方法的大部分灵活性,同时仍保留了静态或函数重载方法的许多严格性。
但是,Go没有这些功能。