浮動小数点型

  • 浮動小数点 float32, float64float, (floatは、プロセッサの最高速浮動小数点型のサイズになります。)

サフィックスは'f32, 'f64です。

var
  nF32 = 123'f32
  nF64 = 0.0000000000001e308

x86アーキテクチャでは浮動小数点演算の結果は演算をコンパイル時に行うか実行時に行うかによって変化する可能性があることに注意してください。

const foo = 0.2'f32
echo foo - 0.2 # => 0.0

let bar = 0.2'f32
echo bar - 0.2 # => 2.980232227667301e-09

基本的には浮動小数点の演算を同値比較するべきではありません。以下のようにどの程度の誤差を許容するか、という観点で処理を行うべきです。

# Procedure of approx equal.
proc `=~` *(x, y: float, eps: float = 1.0e-7): bool =
  result = abs(x - y) < eps

doAssert bar != 0.2
doAssert bar =~ 0.2