float - 単精度(32bit)浮動小数点型

「float」は単精度(32bit)浮動小数点型です。単精度というのは単に32bitという意味です。浮動小数点とは、小数をソフトウェアで表現する一つの形式で、IEEE 754 形式においては、符号部、仮数部、指数部からなります。仮数部は、有効桁数のことだと考えてください。

# 単精度(32bit)浮動小数点型
float

単精度(32bit)浮動小数点型が表現できる浮動小数の最大値はFTL_MAX、最小値はFLT_MINで定義されています。

floatのサンプルコード

floatを使ったサンプルコードです。浮動小数点リテラルの型が、float型であることを明示するために「f」サフィックスを指定しています。

#include <stdio.h>
#include <stdint.h>

int main(void) {
  float num = 5.4f;
  
  printf("%f\n", num);
}

printf関数のフォーマット指定子で「%f」を使っています。

出力結果。

5.400000

16bit幅の整数はfloatで表現できる

floatは浮動小数点型ですが、整数は浮動小数点の一つの値なので、整数も表現できます。

数の大小関係で覚えておいてほしいのは、16bit幅の整数(int16_t, uint16_t)は、floatで表現できるということです。一方で、32bit幅の整数(int32_t, uint32_t)は、floatでは表現できず、doubleが必要です。

float型とディープラーニングとGPUの関係

ディープラーニングでは、計算処理の高速化のためにGPUによる演算を行います。GPUの処理は、一般的なものではfloat幅の数値の並列計算です。GPUはもともと画面表示用のプロセッサで、密度を高めて並列計算を行うためにひとつひとつのユニットはfloat幅です。これが、ディープラーニングで必要とされる数値計算と、相性が良かったのです。PerlでGPU/CUDAをバインディングすることも可能です。

関連情報