使用Go语言进行复数计算优选complex128复数类型
如下文例子,如果使用 complex64 类型的话,就会由于精度不足而出错;改用 complex128 复数类型就可以了。
//jxs @ 2021.03.19 14:04:17
package main
import (
"fmt"
)
func main() {
//此时是有问题的,因为使用的是 complex64
var x, x_mul, y complex64
x = 1 + 15i
x_mul = x * x * x * x * x * x * x
y = x_mul + 1
fmt.Println(y == x_mul, y, x_mul)
//运行结果是:true (-7.7967224e+07-1.5503053e+08i) (-7.7967224e+07-1.5503053e+08i)
//此时是没有问题的,因为使用的是 complex128
var xx, xx_mul, yy complex128
xx = 1 + 15i
xx_mul = xx * xx * xx * xx * xx * xx * xx
yy = xx_mul + 1
fmt.Println(yy == xx_mul, yy, xx_mul)
//运行结果是:false (-7.7967223e+07-1.5503052e+08i) (-7.7967224e+07-1.5503052e+08i)
}

本文通过实例对比了Go语言中使用complex64与complex128类型进行复数计算的区别,指出当计算精度要求较高时,应选择complex128以避免因精度不足导致的错误。
4002

被折叠的 条评论
为什么被折叠?



