Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗goSpCxTp 78 of 280 menu
◀ ▶

Два типа комплексного числа в Go

Широкий тип комплексного числа стоит по умолчанию, узкий задают явно. Оба хранят пару дробных частей, но внутри используют разную точность для вещественной и мнимой стороны. К широкому типу чаще приводят результаты выражений, если вы сами не сузили переменную.

Узкий тип экономит память там, где достаточно меньшей точности, но смешивать его с широким без приведения нельзя: компилятор потребует явное согласование, как для разных дробных типов.

Соберем значение через complex без литерала и посмотрим тип результата:

z := complex(3, 4) fmt.Printf("%T\n", z)

Команда сборки из двух дробных частей в широком виде возвращает complex128, даже если аргументы короче. Чтобы получить complex64, результат нужно сузить приведением типа к узкому имени.

Сузим результат после сборки:

w := complex64(complex(1, 2)) fmt.Printf("%T\n", w)

Даны части 5 и 1. Соберите из них комплексное значение в main, запишите его в complex128 и выведите тип переменной.

Даны части 0 и 8. Получите узкий тип через приведение после сборки и выведите тип переменной.

Дан следующий код:

var a complex64 = complex(2, 3) b := complex(2, 3)

Скажите, соберется ли программа без дополнительных правок.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить