C#で64ビット符号付き整数を倍精度浮動小数点数に変換する方法
C#では、BitConverter.Int64BitsToDouble()メソッドを使用することで、指定された64ビット符号付き整数(long型)のビットパターンを、そのまま倍精度浮動小数点数(double型)として再解釈できます。このメソッドは値の数値的な変換ではなく、ビット表現をそのまま別の型として読み替える処理を行う点が特徴です。
基本的な構文
public static double Int64BitsToDouble (long value);
引数には64ビット符号付き整数を渡し、戻り値としてそのビットパターンを持つ倍精度浮動小数点数が返されます。
サンプルコード1
以下は、64ビット符号付き整数を倍精度浮動小数点数に再解釈する例です。
using System;
public class Demo {
public static void Main() {
long d = 9846587687;
Console.Write("Value (64-bit signed integer) = "+d);
double res = BitConverter.Int64BitsToDouble(d);
Console.Write("\nValue (double-precision floating point number) = "+res);
}
}出力結果
このプログラムを実行すると、以下のような出力が得られます。
Value (64-bit signed integer) = 9846587687 Value (double-precision floating point number) = 4.86486070491012E-314
サンプルコード2
別の例も見てみましょう。小さな整数値を渡した場合の挙動です。
using System;
public class Demo {
public static void Main() {
long d = 20;
Console.Write("Value (64-bit signed integer) = "+d);
double res = BitConverter.Int64BitsToDouble(d);
Console.Write("\nValue (double-precision floating point number) = "+res);
}
}出力結果
実行すると、次の出力が得られます。
Value (64-bit signed integer) = 20 Value (double-precision floating point number) = 9.88131291682493E-323
補足:逆の変換について
逆に、倍精度浮動小数点数から64ビット符号付き整数へビットパターンを再解釈したい場合は、BitConverter.DoubleToInt64Bits()メソッドを使用します。これにより、double型とlong型の間でビットレベルの相互変換が可能になり、シリアライズやバイナリデータの処理などで活用できます。
-
【Redis入門】INCRBYFLOATコマンドで浮動小数点値をインクリメントする方法
このチュートリアルでは、Redisデータストア内のキーに保存された「浮動小数点数を表す文字列」の値を、指定した値だけ増加させる方法について解説します。この操作には、RedisのINCRBYFLOATコマンドを使用します。 INCRBYFLOATコマンドとは INCRBYFLOATコマンドは、キーに格納された浮動小数点数を表す文字列の値に対し、指定した増分値を加算するためのコマンドです。主な仕様は以下の通りです。 キーが存在しない場合は、まず新しいキーが作成され、値が0に設定された後にインクリメント操作が実行されます。 キーが存在しても、格納されている値のデータ型が文字列型以外の場合や、倍精度
-
Redis HINCRBYFLOATコマンド徹底解説 – ハッシュのフィールドに格納された浮動小数点数をインクリメントする方法
このチュートリアルでは、Redisデータストアに保存されたハッシュ値の中にある特定のフィールドに格納された浮動小数点数をインクリメントする方法を学びます。操作にはredis-cli上でHINCRBYFLOATコマンドを使用します。 HINCRBYFLOATコマンドは、キーに保存されたハッシュ値内の指定フィールドの浮動小数点数に対して、指定したincrement(増分)の値を加算するために使用します。指定したフィールドがハッシュ内に存在しない場合は、そのフィールドが新しく追加され、incrementの値が初期値として設定されます。また、キー自体が存在しない場合には、指定したフィールドのみをメンバ