浮動小数点数をポイントの 2 つの部分 (前後) に分割する数学的またはアルゴリズム的な方法はありますか?
例:
number=456.789
before=456
after=0.789
任意のプログラミング言語でこれを実行できるため、コードは必要ありません。できれば算術演算子やその他の演算子を使用する汎用アルゴリズムが必要です。
浮動小数点数をポイントの 2 つの部分 (前後) に分割する数学的またはアルゴリズム的な方法はありますか?
例:
number=456.789
before=456
after=0.789
任意のプログラミング言語でこれを実行できるため、コードは必要ありません。できれば算術演算子やその他の演算子を使用する汎用アルゴリズムが必要です。
それはすべて、浮動小数点値で使用できる操作によって異なります。
floor
、ceil
それらのいずれかを使用して整数部分を取得し、減算を使用して小数部分を取得できます。.
または,
) で分割できますが、科学表記法を使用するには追加の作業が必要になります。私は通常、あなたが求めるものを得るために次のことを行います:
double number=456.789;
int before= number; //This type cast is equivalent to floor(number)
double after=number-before;
したがって、指定された浮動小数点数のフロアを取得することが、実行する主なタスクです。ここで、フロア メソッドは、入力数値以下の最大の整数を返すだけです。これはおそらく、いくつかの言語レベルの操作でメモリ内の浮動小数点表現を利用することによって行われます (浮動小数点数は定義されていないため、通常のビット操作は実行できません)。したがって、floor/type-cast を使用したくない場合は、基本的に運命づけられています。