float 使うヤツはドシロートかおぢさん
■ このスレッドは過去ログ倉庫に格納されています
なんで double 使わないの?
もう氏んでください。迷惑です。
むかし懐かしい BASIC じゃあるまいし。
何考えてるんだ?
※巨大な配列で float a[10000]; とか取るなら仕方ないです。
または、他のコンピュータとのデータのやりとりのために
どうしても相手が float で無ければダメだとか
そういうのは別ですよ、もちろん。 んなこと言われてもdouble(つーか64ビット浮動小数点数)を
サポートしてないんだもん。文句はハード屋に言ってくれ。 昔の人のほうがdouble使うと思うよ。
でも、DirectX使い出すとfloatの出番が増える。 うん、昔の人のほうがdouble使う
float使うのは20代くらい? 真のおぢさんはBCDを使う
floatを使うのは偽おぢさん >>1はベクトル演算とかやったことがないんだろうな。
どれだけ時代に取り残されてるんだよ。 このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。 残念、floatを使えばベクタ化で倍速出るかもしれないのに。 GPU関連だとfloatにしないと駄目だろJK
doubleなんかで処理してたら処理力半減してるぜ多分 全部整数にしろ!FPUが無かったらどうするんだ!のスレかと思った shellプログラマの俺はいつも整数ですけど何か
ロードアベレージ取得して100倍にしますよ当然 数値計算では double じゃないと精度的にマズい場合があるね。
グラフィック関連では float がデフォだが。 昔は、必要な桁数の加減乗除の関数を書いていたけど、今はしない。
言語の方でサポートしてるし。 精度気にしてるのにdoubleとかネタだよな?
Cなら整数計算して桁揃えで除算
JavaならBigDecimalだろJK 昔懐かしいBASICにはfloatとか無いわけですけど struct Hoge {
char a;
double b;
int c;
};
なんてのを見るとイライラする ここはエスパー達のスレか?
環境の前提が無ければ、何も議論できないだろうに 他のコンピュータとやりとりするのに精度はともかく、
floatなんか使わない 今時一瞬で切り替えられるようにtypedefしとくんじゃないの? >>35
疎なRPC的なものだったらやらないけど、
全部同じアーキテクチャって分かってるなら気にしない。 以前doubleとlong doubleをtypedefで使い分けてたことがあった。
実際には変数の型だけでなくprintf/scanf系のフォーマットストリングも変えないと
いけなかったりする。プラットフォーム毎に違ったりもするし。
本当は多倍長計算の型もシームレスに使いたかったがそのときは適当な実装が
なかったので断念した。例えば多倍長同士の足し算を+でやったりとかできなかった。
必然的にC++ということになるわけだが... 工業系でfloat使うとしょっぱいアプリができちゃう double配列だとメモリ上にdouble word alignmentされるかどうかで
性能が違ったりね。今はちゃんとアーキテクチャを判断してコンパイラがやってくれるの? >>44
コンパイルオプションで指定する必要はあるかも。 ゲームプログラマを全員ドシロウト呼ばわりとは
勇気のある>>1だな、おい。 floatだとなぜかおかしくなるけど
doubleだとうまくいきます!
ということですねわかります >ゲームプログラマを全員ドシロウト呼ばわりとは
ゲームは速度重視で整数だろ Cellはへんに固定小数やるより浮動小数やったほうが速いよ 実数演算を整数でやるのを一般的に固定小数っていうんだけど。 >>54
Cellの話もしてないが、いきなり関係ない話をし始めるのがダンゴ脳。 別にCellでなくてもいいよ。
ゲームで固定小数が持て囃されたのはx86でいうとMMXが登場してからSSEが出るまでまで。
PS1も固定小数中心だったっけな。
SSE以降のx86やナウいゲーム機でハードウェア浮動小数使わないのはただの馬鹿だろ。
パフォーマンスの実測もやらずに整数の方が速いと思い込んでるだけの痛い子。 >>59
無理に団子を貶す結論に落とさなくても充分ですよ。このスレの流れなんて元々ありゃしないのだから。 ひょっとして>>51に粘着されちゃってるー?
こわー ダンゴさんのストーカー発言でスレがあらぬ方向に向かいそうだな ちなみにh.264で浮動小数ではなく整数でDCTやるのは演算速度とは全く関係ない理由 51 名前:デフォルトの名無しさん[sage] 投稿日:2008/10/04(土) 02:46:43
>ゲームプログラマを全員ドシロウト呼ばわりとは
ゲームは速度重視で整数だろ
この恥ずかしい発言を恥ずかしいと思わない馬鹿は本人以外にないだろ 別に>>51でなくともいいが、一体どこの世界のどこのゲームがfloatの代わりに整数を使ってるのか答えてみろよ。
日本語の読めない人は答えなくてイイよ
はいもう一度
「floatの代わりに」
DSでは固定小数がいまだ現役なんだから突っ込めよ
まさか68kやゼッパチの世代?
>>76
思考停止したコピペに反応すんなよ。反応するあんたが馬鹿にしか見えないぞ。 誰か>>1の住所知らない?
ちょっと遊びに行きたいな なんで2chっていつもこうなの?
英語圏のフォーラムなんか実に有意義な技術的議論が
日々飛び交ってるのに
もうやだこの国 >>89
2chじゃなくて普通のフォーラム行けよ低脳さんw doubleとfloatの演算速度は変わらなくなってるし
浮動小数点が主に使われる3D分野がfloatに固執してるということ以外に
もうfloatの存在価値はないね >>doubleとfloatの演算速度は変わらなくなってるし
例えば何?
>>94
なんでfloatに固執しているか知ってるよね?
floatで精度は十分な上に帯域幅の問題
純粋に1/2になるから
32bit幅なら丁度合うし >>94
実際、floatならvectorizeできるのにdoubleではできない状況だと所要時間が倍違ってくる。
最近のXeonだと画像なり周波数空間像なりがキャッシュに載るかどうかの瀬戸際だから、
floatならキャッシュに載り切る状況ならそこでも所要時間が倍以上違ってくる。
従って、floatの存在も馬鹿にしたもんじゃない。 入門程度のどうでもいい練習ソース書くときに、最近はdoubleで余裕って刷り込まれるからな。 まぁdoubleとfloatが混在するよりは良いんじゃないかねぇ 混在はいかんね。floatとdoubleの変換は、一回の加減乗に較べて一桁以上遅い。
で、こんなコードを書いてたり。
#if defined(USE_DOUBLE)
typedef double Float;
#elif defined(USE_FLOAT)
typedef float Float;
#else
#error USE_FLOAT or USE_DOUBLE is needed.
#endif
Float foo = Float(3.14); FLT_EVAL_METHODが使えればいいんだけどねぇ >>100
それだけだとdoubleな定数使ってて、後からfloatに切り替えたときに問題おきない? >>102
具体的に。一応そのための関数型キャストなんだけど。 float f;
std::min( f, 1.0 );
このコンパイルが通らないのは正直むかつくお >>103
値の丸めが起きて、それが原因の問題に
気がつき難いのじゃないかなと。 >>105
そもそもそれが問題になるところでは使わないから大丈夫。
>>104
std::min(f, 1.f)で何か不満でも? なんで 1.0f じゃなくて 1.f とか奇怪な表記する人が多いんだろう? ゆとりだろ。
若しくはソースを見る人への思いやりがない人。 ・昔のC言語だとfloatをfloatのまま演算することが無く、よほどメモリを食う場合以外
doubleの方が速かった(この頃は「floatはdoubleより遅いからメモリ節約くらいしか
役に立たない」という教育がされたので、その頃から知識を更新してないド素人か老害
は>>1のように思い続けている)
・今のC言語コンパイラでは、floatはfloatのまま演算させることが普通
・最近の環境では一般に、floatもdoubleも速度は変わらないことが多いが、SIMD命令
だと普通はfloatが速く、メモリ効率もfloatの方がいいのでfloatが速度的には有利
・精度はdoubleの方が圧倒的にマシ(というかfloatの精度はかなりひどいので要注意)
まぁ、現時点では用途で使い分けだな。それも、あくまでも現時点での話だが。 >>110
一つだけ補足。SIMD命令ではfloatが速いということがメリットなのではない。
SIMDなので、並列度が高くなることの方が重要。 floatは精度悪すぎ
ゲームなどお遊びにしか使えね〜 ゲームはお遊びだが、ゲームプログラミングはお遊びには程遠いな
言葉遊びの習慣がある奴は人から信用されないぞ >>115
>言葉遊びの習慣がある奴
一瞬、「そりゃお前のことじゃね?」と思ってしまった。
が、結局誰を指して言ってるんだ? CPUってもう64bitがデフォルトになってるから64bitでレジスタもワイヤーも組んであって
むしろ32bitをわざわざ64bitレジスタに乗っけてるような状態だから
double常用でぜんぜんいいんだけど
IPV4だのIPV5だの中途半端なものがfloatだよ
状況によってはdoubleより早いかもしらんが、doubleしかなきゃないで誰も困らないだろ
さっさと64bitに統一してしまえ >>120
>IPV5だの
そんな規格は存在しません。
>doubleしかなきゃないで誰も困らないだろ
ときどきは通信速度のことも思い出してあげてください。 floatをdoubleにするだけで、
性能が1/10になっちゃうなんて言われたら
そんな簡単にいらないなんて言えないよ doubleしかなきゃないできっと誰も困らないが、現にdoubleより速くて精度の低い
floatがあるから使い分けなきゃ駄目なんだよ、現実は面倒だね
この程度が面倒ならプログラマなんかやってられねーけどな >>1は固定小数点処理を頑張って書いてベンチもせずに使ってる奴と同じ匂いがする >>120
おまえみたいな考え方の奴がいるせいで日本の経済格差が広がるんだろうな 最近のマシンじゃ処理時間なんて扱うメモリ量で殆ど決まるからなー。
大きなベクトルや行列演算なんかするとfloatとdoubleできっかり2倍違う。 >>129
経済格差が広がったのは村山政権のとき。64bit統一なんて無関係。 __
, '´ ヽ
.{ i{ノハ从k} ./)
ヽ!l|, ゚ ヮ゚ノリ、// よい
/' );-さ-リつヾ
/ Uノ_i_iヽ
へノ し'-/調子
""""""""""""""
__
, '´ ヽ
.{ i{ノハ从k} ./)
ヽ!l|, ゚ ヮ゚ノリ、// しょっと。
/' );-さ-リつヾ
/ Uノ_i_iヽ
へノ し'ノ
調子
""""""""""""""""" >>49
すでに2年以上前に予言されていたという衝撃の事実 某ゲームパブリッシャで通販頼むと
佐川急便の問い合わせ番号が【4.61557E+11】で表示されるとかいうツイートを見たんだが
何が起きているのか float に限らず、変数はきちんとしないとダメですね。
MS Word のドローモードでズーム8回(2^8倍)未満
でも座標が丸まってしまって、ちゃんとピック出来
なかったり、ラバーバンドと再描画結果がずれるのを
見ると、とてもガッカリしますよね。
なんで座標を最後まで固定少数、浮動少数にして計算
していなんでしょうかね?
バカですかね? floatとdoubleのいいとこ取りっていうか、中間ぐらいのはないの? ない。恐らく作ってもメリットが殆どない。どうしてもやりたければ、doubleを精度を制限して使う位か。 8087のメンツ維持のためには拡張倍精度の策定は不可避だったんだろうな。
じゃあついでに拡張単精度も定めようと。
それ以上の意義はたぶん無い。 floatは数が大きくなると、最小の刻みが2以上になって、
1足せないと聞いたが、doubleはどうなの? >>153
同じことよ。例えばこれを実行してみればいい。
int main() {
double a = 1e20;
double b = 8200;
double c = a + b;
printf("%g + %g = %g\n", a, b, c);
return 0;
} >>110
C言語だと、組み込み関数はdoubleになってる奴が多いからな。
型毎に関数が必要になってしまうから、doubleで統一。
(型毎に、別な関数名が必要になってしまう)
C++なら、同じ関数名でも型に応じた処理可能だが。 >>156
C99ではfloat版もlong double版も用意されているね。
ライブラリが真面目に実装されているかは知らんが。 符号1bit+指数部2bit+仮数部5bitつーのをこないだ見た 関数名つっても普通にインライン展開されちゃうんでしょ? ■ このスレッドは過去ログ倉庫に格納されています