我需要知道golang中
float64
和complex128
变量类型的最大值。 go 似乎没有 float.h
的等价物,我不知道如何计算它。
例如,
package main
import (
"fmt"
"math"
)
func main() {
const f = math.MaxFloat64
fmt.Printf("%[1]T %[1]v\n", f)
const c = complex(math.MaxFloat64, math.MaxFloat64)
fmt.Printf("%[1]T %[1]v\n", c)
}
输出:
float64 1.7976931348623157e+308
complex128 (1.7976931348623157e+308+1.7976931348623157e+308i)
import "math"
浮点限制值。 Max是最大的有限值 可以用类型来表示。 SmallestNonzero 是最小的正数, 类型可表示的非零值。
const ( MaxFloat32 = 3.40282346638528859811704183484516925440e+38 // 2**127 * (2**24 - 1) / 2**23 SmallestNonzeroFloat32 = 1.401298464324817070923729583289916131280e-45 // 1 / 2**(127 - 1 + 23) MaxFloat64 = 1.797693134862315708145274237317043567981e+308 // 2**1023 * (2**53 - 1) / 2**52 SmallestNonzeroFloat64 = 4.940656458412465441765687928682213723651e-324 // 1 / 2**(1023 - 1 + 52) )
数字类型表示整数或浮点值的集合。 预先声明的独立于体系结构的数字类型是:
uint8 the set of all unsigned 8-bit integers (0 to 255) uint16 the set of all unsigned 16-bit integers (0 to 65535) uint32 the set of all unsigned 32-bit integers (0 to 4294967295) uint64 the set of all unsigned 64-bit integers (0 to 18446744073709551615) int8 the set of all signed 8-bit integers (-128 to 127) int16 the set of all signed 16-bit integers (-32768 to 32767) int32 the set of all signed 32-bit integers (-2147483648 to 2147483647) int64 the set of all signed 64-bit integers (-9223372036854775808 to 9223372036854775807) float32 the set of all IEEE-754 32-bit floating-point numbers float64 the set of all IEEE-754 64-bit floating-point numbers complex64 the set of all complex numbers with float32 real and imaginary parts complex128 the set of all complex numbers with float64 real and imaginary parts byte alias for uint8 rune alias for int32
n 位整数的值是 n 位宽,并使用 二进制补码算术。
还有一组预先声明的数字类型 特定于实现的尺寸:
uint either 32 or 64 bits int same size as uint uintptr an unsigned integer large enough to store the uninterpreted bits of a pointer value
为了避免可移植性问题,所有数字类型都是不同的,除了 byte,它是 uint8 的别名,rune,它是 uint8 的别名 int32。不同数值类型混合时需要进行转换 在表达式或赋值中。例如,int32 和 int 不是 相同的类型,即使它们在特定的尺寸上可能具有相同的尺寸 建筑。
您还可以考虑使用 math
包中的
Inf方法,该方法 返回无穷大的值(如果需要,可以为正值或负值),但被认为是
float64
。
不太确定
math.MaxFloat64
和math.Inf()
之间是否存在争论。比较两者,我发现 Go 将无穷大值解释为大于最大浮点值。
package main
import (
"fmt"
"math"
)
func main() {
infPos := math.Inf(1) // gives positive infinity
fmt.Printf("%[1]T %[1]v\n", infPos)
infNeg := math.Inf(-1) // gives negative infinity
fmt.Printf("%[1]T %[1]v\n", infNeg)
}