РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1578 of 1593 menu

Тип C.float

Тип C.float в Go представляет 32-битное число с плавающей точкой (соответствует типу float в C). Он используется при работе с CGO для передачи данных между Go и C-кодом. В Go-коде значения типа C.float можно преобразовывать в float32 и обратно с помощью явного приведения типа. При передаче чисел с плавающей точкой важно учитывать точность и размерность типов данных.

Синтаксис

var f C.float = 3.14 goFloat := float32(f) cFloat := C.float(goFloat)

Основные операции с типом C.float включают:

  • Объявление переменной: var x C.float
  • Преобразование из float32: C.float(3.14)
  • Преобразование в float32: float32(x)
  • Использование в C-функциях в качестве аргументов и возвращаемых значений

Пример

Давайте создадим простую C-функцию, которая принимает число с плавающей точкой, умножает его на 2 и возвращает результат:

package main /* float multiply_by_two(float x) { return x * 2.0; } */ import "C" import "fmt" func main() { x := C.float(5.5) res := C.multiply_by_two(x) fmt.Printf("Result: %f\n", float32(res)) }

Результат выполнения кода:

"Result: 11.000000"

В этом примере мы преобразуем Go-значение 5.5 в C.float, передаем его в C-функцию и преобразуем результат обратно в float32 для вывода.

Пример

Давайте передадим массив чисел с плавающей точкой из Go в C для вычисления среднего значения:

package main /* float average(float *arr, int size) { float sum = 0.0; for (int i = 0; i < size; i++) { sum += arr[i]; } return sum / size; } */ import "C" import "fmt" import "unsafe" func main() { goArr := []float32{1.5, 2.5, 3.5, 4.5, 5.5} cArr := make([]C.float, len(goArr)) for i, v := range goArr { cArr[i] = C.float(v) } res := C.average((*C.float)(unsafe.Pointer(&cArr[0])), C.int(len(cArr))) fmt.Printf("Average: %f\n", float32(res)) }

Результат выполнения кода:

"Average: 3.500000"

Здесь мы создаем слайс C.float, заполняем его данными из Go-слайса и передаем указатель на первый элемент в C-функцию. Результат преобразуется обратно в float32.

Смотрите также

  • тип C.double,
    который представляет 64-битное число с плавающей точкой
  • тип C.int,
    который представляет 32-битное целое число со знаком
  • функцию C.CString,
    которая преобразует строку Go в C-строку
  • раздел pointers,
    который описывает правила работы с указателями в CGO
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить