• ベストアンサー

輝度を小数点で計算する理由(整数でもいいのでは?)

アホな質問かもしれませんが、よろしくお願いします。 GPUでは座標計算の他にRGBの輝度計算も行なっているのは周知の事実ですが、どうして小数点で計算するのでしょうか?RGBの0~255で表すと荒すぎるから小数点で表すことで細かい色まで表すという理由から小数点を使っているんだと思います。だったら別に小数点でなくても桁数が多い整数値で表せばいいのではないかと思うんです。 これは、座標を計算するユニット(vertex shader)が浮動小数点で、このユニットと仕様を統合するために、輝度計算も小数点で表しているということだったら納得ができるのですが・・・。 推測の範囲なので自信が持てないんです。 何かここについて言及している文書やページがあれば、あるいははっきりここの理屈がわかる方がいれば、アホな質問かも知れませんが教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • SortaNerd
  • ベストアンサー率43% (1185/2748)
回答No.2

まず、浮動小数点ではなく、浮動小数点数です。 浮動小数点数は、桁数の多い整数とは用途が全く異なります。 例えば、 32106537821065378062178056310 のような数は浮動小数点数で表すのは困難で、桁数の多い整数で表すべきです。 また、 42.56321803891057849015783904718 のような数も同様です。これは桁数の多い固定小数点数を使う必要があります。 浮動小数点数が使えるのは 4236830000000000000000000000000000 や 0.00000000000000000000000000000241638 のように、桁数は多いけれども実際に0以外の数字が入っている桁はごくわずかな場合です。(実際には2進数を使うが分かりやすく10進数で表現した) 浮動小数点数はこのような数を効果的に扱うことができます。 計算で浮動小数点数を用いる主な用途は、 「計算途中で非常に大きい/小さい数になるが、最終的に必要な桁数は数桁」 という場合です。 例えば 10 ÷ 1000億 × 1兆 = ? という計算を整数や固定小数点数で行えばよほどの桁数がない限り10÷1000億の時点で0になり正しい答えが出せません。

その他の回答 (1)

noname#142909
noname#142909
回答No.1

小数点を使うと 小数点以下が必要ない場合0~255の256諧調で済みますね 必要な時だけ小数点以下を使えばいい訳です 小数点を使わない場合かりに5桁にしたとしましょう 0~10000とすると10000諧調必要ですねさらにもっと細かくしたい場合小数点以下を使うか桁をもっと増やすか 効率的ではないですね 以上簡単な説明でした