为什么 math.Pow10(e int) 返回的是 float64 而不是 int64?

huangapple go评论78阅读模式
英文:

Why does math.Pow10(e int) returns float64 rather than int64?

问题

由于参数 eint 类型,为什么不直接返回 int64 呢?这里有什么特殊的原因吗?

英文:

Since parameter e is int, why not just return an int64? Is there any special reason for this?

答案1

得分: 7

两个原因:

首先,参数可能是负数,此时结果是介于01之间的分数,因此需要返回一个float64类型的值。

fmt.Println(math.Pow10(-1))

输出结果(在Go Playground上尝试):

0.1

其次,几乎每个math包中的函数都返回float64类型的值,如果添加一个不返回该类型的函数,将会破坏“一致性”。

[*] 一些例外包括Float32frombits()llogb()等函数,其中偏离是合理的。

英文:

2 reasons:

First, the parameter may be negative too, in which case the result is a fraction number between 0 and 1, so a float64 return value is not just justified but needed.

fmt.Println(math.Pow10(-1))

Output (try it on the Go Playground):

0.1

Second, almost<sup>*</sup> every function of the math package returns value(s) of type float64, adding one that doesn't would break "consistency".

<sup>[*] Few exceptions include functions like Float32frombits() and llogb() where the deviation is justified.</sup>

huangapple
  • 本文由 发表于 2017年2月13日 17:07:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/42200281.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定