- 1 名前:名無しさん@お腹いっぱい。 [2005/09/22(木) 20:29:34 ]
- UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド
過去スレ(プログラム技術板) Part6 pc8.2ch.net/test/read.cgi/tech/1116908090/ Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/ Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/ Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/ Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/ Part1 pc2.2ch.net/tech/kako/992/992057422.html Part3ミラー makimo.to/2ch/pc5_tech/1085/1085930894.html Part2ミラー makimo.to/2ch/pc5_tech/1055/1055110889.html 関連スレ Cygwin使っている人いますか? その14 (UNIX板) pc8.2ch.net/test/read.cgi/unix/1107587275/ Cygwin使っている人いますか? 3 (Windows板) pc8.2ch.net/test/read.cgi/win/1090131123/ 関連板 Linux板 pc8.2ch.net/linux/ プログラム技術板 pc8.2ch.net/tech/
- 184 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/20(水) 21:41:37 ]
- どうでもいいなら、そこだけ別ファイルなりにして別のオプションでコンパイルしろよ
- 185 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/20(水) 21:43:57 ]
- volatile unsigned long *var
- 186 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/20(水) 23:45:21 ]
- >>182
最適化したくないとこだけソースファイル分けて別のオブジェクトにすれば?
- 187 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/21(木) 00:06:06 ]
- >>186
>>184
- 188 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/21(木) 11:08:24 ]
- >185
ありがとうございます うまくいきました
- 189 名前:名無しさん@お腹いっぱい。 [2008/02/22(金) 04:56:20 ]
- シグナル周りの初期化の定石を教えてください。
- 190 名前:k [2008/02/22(金) 05:40:31 ]
- FFmpegについて質問したいのですが、
ものすごく初歩的なことです。 コマンドプロンプトで命令を実行しようとするとunknown formatと出て どうしようもできません。 どなたかおられますかね?? いくら検索してもどこにも載ってない・・・
- 191 名前:k [2008/02/22(金) 05:51:36 ]
- www.xucker.jpn.org/product/ffmpeg_commands.html
ここのサイトのFLV1の下のやつ "c:\ffmpegフォルダー\ffmpeg.exe" "-y" "-i" "c:\入力.flv" "-ab" "96k" "-r" "29.97" "-ac" "2" "-ar" "44100" "-b" "400k" "-s" "320x240" "c:\出力.flv" を日本語部分変えてコマンドプロンプトに入力すると、 〜〜〜入力.flv Unknown Formatと出て、そこからどうにもできません。 どうすればいいんでしょう?
- 192 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/22(金) 13:02:01 ]
- 370 :k [] :2008/02/22(金) 05:57:01
既知のフォーマットのflv の意味が分かりませんww フォーマットの意味が… これはFFmpegがきちんとインストールされてるか検査するために一応やってみたのですが… 何をどう変換してるのかすら分からないです。(flvをflvって…) つまり、どうすればUnknown Formatが出なくなるんでしょうか…? 371 :k [] :2008/02/22(金) 06:10:22 ま、いいわちゃんとしたとこで聞くし。 数学板の住人が言ってたな。プログラミング板はバカが多いって。 低学歴どもは性格も悪いからな…高学歴のオレの前にひざまづくがイイ。 じゃあな。暗い職場で一生プログラム打ってしねばww 372 :k [] :2008/02/22(金) 06:11:29 頭が悪いヤツは単純作業を繰り返して社会にこき使われればいい。 単純作業しかできないのだからな。 オレのように賢い人間はこのようなことする必要ないんだよ。 今度こそじゃあな。
- 193 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/02/22(金) 20:44:56 ]
- >>192
svnからスナップショットとっておいで
- 194 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/18(火) 20:36:13 ]
- 先日ラクダ本を購入してボチボチ読んでるんだけど、
こんな書き方が出来るのかと目から鱗の連続・・ 安価な本読んでやりたい事が出来るようになった程度で 満足していた自分が情けなくなる・・ 参考書は多少高くてもちゃんとしたものを買わないと駄目だな・・
- 195 名前:名無しさん@お腹いっぱい。 [2008/03/19(水) 06:24:15 ]
- 本買えばいいってもんでもないけどな
- 196 名前:名無しさん@お腹いっぱい。 [2008/03/19(水) 15:30:34 ]
- 意味不明なんですけど。なんでこんなの分かるんですか?すごいね。
※くれぐれも、返信に「それはお前がバカだからさ」とは書かないでください。書いたら(´・ω・`)て感じの顔になってしまいます。
- 197 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/19(水) 20:30:27 ]
- マニュアル読んで応用が効かないような奴はまともなコード書けないだろ。
本を読んで応用を知っても、結局それしかできないし。
- 198 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/20(木) 10:32:33 ]
- >>194
て言うか素直が一番
- 199 名前:名無しさん@お腹いっぱい。 [2008/03/20(木) 23:31:17 ]
- >>196
て言うかこいつが一番素直
- 200 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/21(金) 01:27:43 ]
- >>197
そうやって試行錯誤して成長するんだろ。成長しないやつもいるが。はは。
- 201 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/21(金) 13:20:41 ]
- >>194
逆にラクダ本を理解できるようになった と考えればいいじゃない
- 202 名前:名無しさん@お腹いっぱい。 [2008/03/28(金) 17:05:20 ]
- >iconv_open("SJIS", "EUC-JP");
この引数に使える文字セットってどこを見ればわかりますか?
- 203 名前:202 [2008/03/28(金) 17:16:10 ]
- もしくは、現在の文字コードの文字列をOSから取得することはできますか?
- 204 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/28(金) 17:17:41 ]
- >>202
OSは何? >>203 「現在の文字コードの文字列」って?
- 205 名前:202 mailto:sage [2008/03/28(金) 17:33:14 ]
- Mac OS X です。
現在の文字コードって、GUIから入力されたときの文字コードっていうか。。。
- 206 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/28(金) 18:15:54 ]
- ひどいマルチだ。
pc11.2ch.net/test/read.cgi/tech/1205795434/26 pc11.2ch.net/test/read.cgi/linux/1118024349/691
- 207 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/28(金) 19:23:33 ]
- $ iconv -l
とか、 iconv_open("char", "wchar_t") とかの話?
- 208 名前:名無しさん@お腹いっぱい。 [2008/03/30(日) 16:15:16 ]
- env
とかで調べろ
- 209 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/03/31(月) 11:37:44 ]
-
黒 タ イ ツ の 暗 黒 シ ュ シ ュ ト リ ア ン
- 210 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/04/03(木) 01:28:48 ]
- Hello world
- 211 名前:名無しさん@お腹いっぱい。 [2008/05/28(水) 09:28:01 ]
- ムー板に書きましたが、誰も相手にしてくれません:
>struct timeval tv; の値って、 doubleの変数に入出力できたりしますか? というか、timeval <---> double 変換したいのですが、 どういうコードでできますか?
- 212 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 09:31:05 ]
- >>211
期待する動作と、自分でやったことと、自分でやった結果(期待とどう違ったのか)、説明が 抜けてるから相手にされないんだろ。無理もない。
- 213 名前:211 mailto:sage [2008/05/28(水) 09:36:54 ]
- いや、標準の関数とかマクロでできると思ってるので、
その名称を教えて頂きたいだけなんですが。
- 214 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 10:06:01 ]
- ムー板というと
UFOの真実! とかそういうネタを扱う板だろうか?
- 215 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 10:17:13 ]
- >>211
struct timeval tv; double d; d = (double)(tv.tv_sec + tv.tv_usec/1000000.0); >>212 わからないなら黙ってろ
- 216 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 10:17:28 ]
- そういうのが好きな人の集まった板でつ。
関連板: 魔板
- 217 名前:211 mailto:sage [2008/05/28(水) 10:18:30 ]
- >>215
知りたいのはその内容ですた orz
- 218 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 10:24:32 ]
- >>213 >212
- 219 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 10:26:19 ]
- >>218
>>215 で解決済。 期待する動作は自明。 「自分でやったことと、自分でやった結果」なんて書かなくてもわかる。
- 220 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 10:34:32 ]
- >>219
いやね、 tv.tv_sec*1000000.0 + tv.tv_usec なんて答えもあり得るし、 そもそも >215 で正解なら、そんなもん真っ先に自分で書くだろうから 何か変わった変換を期待してるか、そうでもなけりゃコードレベルで ミスってるんじゃないかと思っちゃったんだよ。 > 「自分でやったことと、自分でやった結果」なんて書かなくてもわかる。 おぉ。エスパー乙。 あ、「こんな質問する人が自分で何かやってるわけない」、ってことかな。
- 221 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 10:37:36 ]
- エスパーすると、
tv.tv_usecを100万で割る時に、末尾の「.0」を付け忘れて int扱いで切り捨てられたとかだろ。
- 222 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 17:58:12 ]
- >>215
相変わらず、素人丸出し駄目回答で粋がっているのか。 自ら恥晒すことないのに… 引っ込んでなよ。
- 223 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 18:13:22 ]
- >>222
>>217
- 224 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/05/28(水) 18:52:17 ]
- 具体的に指摘されないとわからないようだ。本当にヘボなんだな。
d = (double)(tv.tv_sec + tv.tv_usec * 1e-6); 乗算をつかう理由は二つある。先生に聞いてきなさい。www
- 225 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 19:05:21 ]
- 2chに書き込む手順を教えてください
- 226 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/02(月) 19:07:12 ]
- 1.10年ROMる。
2.書き込みたいスレで書き込んでも良いか質問する Yes→書き込む No→1へ
- 227 名前:名無しさん@お腹いっぱい。 [2008/06/03(火) 11:22:39 ]
- プログラムからファイル書き込みするとして、
ファイルの権限付与はどういうAPIで行うのでしょうか? できればファイルを書き込む前に設定したいのですが、 umaskっていうAPIあるのでしょうか? ググっても見あたりませんが。
- 228 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 11:47:51 ]
- 1ページ目で見つかってますが。
- 229 名前:227 mailto:sage [2008/06/03(火) 11:49:24 ]
- thx>>228
あ、UNIX とか プログラミングとか余計なワードを入れたから混乱しましたが、 ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/umask.2.html で良いわけですか。 もしくは、 ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/chmod.2.html かな。
- 230 名前:227 mailto:sage [2008/06/03(火) 11:52:03 ]
- 良く考えると、umaskだと、
プログラム自身がファイルを書き出すときの設定を行うわけではなくて、 ディレクトリの設定変えてしまうわけですよね。 行儀が悪いですよね。 やっぱ、chmodかな。
- 231 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 12:00:10 ]
- 関連質問させて下さい。
rootユーザーがファイルを作成すると、そのディレクトリがリード権限になってしまったりする場合ありますか?
- 232 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/03(火) 12:39:17 ]
- >>230
ちげーよ。 umaskは既に存在するファイル(ディレクトリ)には何の影響も及ぼさない。 そのプロセスが「作成する」ファイル(ディレクトリ)のモードのマスクを設定する。 umaskはプロセス固有の情報なので、作成したファイル(ディレクトリ)には記録されない。 >>231 ならない。 キミ、根本的に誤解しているから、基本から調べなおす事をすすめる。
- 233 名前:227 mailto:sage [2008/06/03(火) 12:42:12 ]
- とりあえずthx>>232
- 234 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 07:29:17 ]
- >>226
質問はどうやって書き込むかをどうやって質問しますか
- 235 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 08:12:33 ]
- 「仮にぼくが質問できるようになったとしよう」と仮定法で進めてはどうか?
- 236 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/04(水) 16:44:37 ]
- 書き込む方法についての質問を書き込む方法は?
- 237 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/06/05(木) 13:49:46 ]
- 書き込む方法が分からないまま書き込んでいますか?
- 238 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/07/31(木) 19:26:13 ]
- プログラミングしりとり
game14.2ch.net/test/read.cgi/575/1010948472/l50
- 239 名前:名無しさん@お腹いっぱい。 mailto:age [2008/10/05(日) 18:30:14 ]
- プログラム中(C言語)にて/dev/ttyA1やttyA0といったデバイスファイルに対し
ボーレート・パリティの設定をioctl関数で行いたいんだけど、 渡す引数等がわかりません。 ご存知の方教えてください。
- 240 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/05(日) 19:04:16 ]
- >>239
ioctl()をじかに呼ばずに、tcsetattr()使った方がいいよ。
- 241 名前:239 mailto:age [2008/10/05(日) 20:19:05 ]
- >>240
ありがとうございます。 tcsetattr()は初めて聞く関数名でした。 tcsetattrはioctlをラッピングしたAPIと考えてよろしいのですか?
- 242 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/10/05(日) 20:47:21 ]
- >>241
ラッパーと考えていいよ。 ioctl()直接の場合、OSによって TCGETAだったりTCGETSだったり、やりかたが変わる。 tcsetattr()を使えば、OS共通で同じやりかた。 struct termiosに値をセットして呼べばいい。
- 243 名前:239 mailto:age [2008/10/05(日) 23:10:30 ]
- >>242
丁寧にありがとうございます。 早速試してみます。
- 244 名前:名無しさん@お腹いっぱい。 [2008/11/04(火) 08:16:43 ]
- /etc/hostsを参照する場合って何のライブラリをつかうんですか?
- 245 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/04(火) 08:20:14 ]
- >>244
gethostent()
- 246 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/08(土) 16:50:36 ]
- ダミーのカーネルドライバを作って/dev にデバイスを生成し
mmap経由でエンドアプリとデバイスアクセスアプリとやりとりをするレイヤー的なものを作ろうと思っているのですが 解析しやすいソースとか資料になるサイトがあれば紹介願います。 ちなみにver7.0です。 なんかver6.*からいろいろ変更があるみたいで拾ったソースとか引数が違っていたりしました。
- 247 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/08(土) 17:28:39 ]
- Windows7か。もうソースまで流出したのか。
- 248 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/10(月) 00:17:14 ]
- >>246
fuseとか。
- 249 名前:246 mailto:sage [2008/11/10(月) 12:11:30 ]
- >>248 あんがとです。
fuseはドライバではなくてエミュレータのようです。 v4l関連を追ってみることにします。
- 250 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/10(月) 18:01:49 ]
- エミュ…?
- 251 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/10(月) 18:09:34 ]
- こ、、工ミュ...?
- 252 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/12(水) 00:32:03 ]
- なんだ、女か。
- 253 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/25(火) 10:42:53 ]
- FreeBSDでカーネルドライバ作るとき機種毎の関数を同じ名称にして
別のファイルに分散して設定ファイルを読み込んでデバイスIDとのマッチングを行ったあと 該当ファイルを読み込む形にしようとおもうのですが 設定ファイルの置き場所に関してルール(例えば/etcとか)があるのか サブプログラムもkoでないといけないのか ユーザープログラムと同じようにsoにしてdlopenとdlsym使っていいのか そしてその場合の置き場所に妥当なところを 教えてくださいませ。
- 254 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/28(金) 22:41:10 ]
- エクセルのマクロでプログラミングをしています
その内容は「じゃんけん」です はい=グー いいえ=チョキ キャンセル=パー にしたいのですが どうやればよいのでしょうか? 教えてください
- 255 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/30(日) 20:42:22 ]
- >253
カーネルドライバは基本的にファイルシステムの マウントより先に初期化されるわけでして、ハイ。
- 256 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/11/30(日) 20:53:39 ]
- >>255
そんなことはわかってるよ。 だから、ファイルシステムのマウントより前に読むために、 例えば/etcとかの特定の置き場所があるのか、 koにする必要があるのか、dlopenとdlsymを使っていいのかを聞いてるんだろ。
- 257 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/03(水) 11:51:37 ]
- >>256 そのとおり!!
現実問題としてloader.confを読んでいるときはファイルシステムは成立しているはずだから loader.confに記述するかkldloadでスタートできるならいいのかなと思っています。 デバイスリストなどユーザーサイドで編集できるようにしておけば プログラムの再コンパイルなどしないでもデバイスIDを登録すれば使えるようにしたいのです。 そのための対応ライブラリーのロードです。 現実問題として同じICチップを使っているデバイスIDの違う製品がでると いちいちソースに手を入れてビルドし直さなくてはいけないようなことがあったからです。
- 258 名前:名無しさん@お腹いっぱい。 [2008/12/04(木) 02:14:01 ]
- C言語で質問なんですが、二つの実数が小数点1ケタまで等しいとき
に〜するみたいにしたいんですけど、 if(a == b){ 〜 } ってやったら実数が完全に等しくないといけないじゃないですか・・・ どうやれば上記のようにできますか?
- 259 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 02:25:28 ]
- 丸めろ
- 260 名前:258 [2008/12/04(木) 09:07:24 ]
- 丸めるってなんですか?
初心者なのであまりくわしくないです。
- 261 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 09:56:38 ]
- 珍しいスレが上がってると思ったら
なんだ、釣りか……
- 262 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 10:19:18 ]
- >>259
引っかけ問題に引っかかったね。 「小数点1ケタまで等しい」→「小数点1ケタ目までの数字が同じ」 だから、丸めたら不正解。
- 263 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 10:24:13 ]
- if (fabs(a - b) < 0.1)
- 264 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 10:27:49 ]
- >>263
それだと 1.09 と 1.1 でも一致とみなされる >>262 参照
- 265 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 10:31:23 ]
- >>262 は抜きして、丸める方式でOKだとしても、
>>263 だと 1.11 と 1.02 が一致と判定されるから駄目だな
- 266 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 10:42:06 ]
- 1.11と1.02は偽
1.00と1.09は真 実際はこんな比較を行いたいわけがない。
- 267 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 10:48:37 ]
- >>266
数値符号の生成処理なんかだと、 文字通りの数字の一致を判定したいことがあるよ。 1.11と1.02は偽 1.00と1.09は真 そういう比較を行ないたい。
- 268 名前:名無しさん@お腹いっぱい。 [2008/12/04(木) 11:08:11 ]
- 文字列化シロ
- 269 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 11:13:46 ]
- なんで誰も10倍してfloorしろとアドバイスしてやらないんだ
- 270 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 11:57:36 ]
- オーバーフローするかもしれんじゃん。
- 271 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 14:18:50 ]
- そんなでかいdoubleなら、小数点以下は0だから、別チェックを前に入れるだけ
- 272 名前:名無しさん@お腹いっぱい。 [2008/12/04(木) 20:04:28 ]
- >>269にツッコミを入れるなら floorでなくてIntだろ。
floorだと-2.0と-2.3が違う値になる。 だから不正解 それと実数は10倍してintだと化けることがあることを忘れるな。 整数部と小数部を分離して 整数部チェックの後 小数部の判定をすればいい
- 273 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 20:09:49 ]
- そろそろ正しいコード書いて見せろよ
- 274 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 22:02:12 ]
- 珍しいスレが上がってると思ったら
なんだ、釣りか……
- 275 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/04(木) 22:10:07 ]
- んじゃ、俺が。
int compare(double a, double b) { char s1[512], s2[512], p; snprintf(s1, sizeof(s1), "%f", a); if ((p = strchr(s1, '.')) && p[1]) p[2] = 0; snprintf(s2, sizeof(s2), "%f", b); if ((p = strchr(s2, '.')) && p[1]) p[2] = 0; return !strcmp(s1, s2); }
- 276 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/05(金) 07:10:19 ]
- >>275
そんなことしなくても、 sprintf() で "%.1f" のフォーマットで文字列化すれば 最初から小数点以下第1位までで文字列カットできる。
- 277 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/05(金) 07:16:16 ]
- >>276
アフォか。"%.1f" だと丸められてしまうだろ。
- 278 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/05(金) 08:58:20 ]
- 指摘される前になおしておこう。
int compare(double a, double b) { char s1[512], s2[512], *p; snprintf(s1, sizeof(s1), "%f", a); if ((p = strchr(s1, '.')) && p[1]) p[2] = 0; snprintf(s2, sizeof(s2), "%f", b); if ((p = strchr(s2, '.')) && p[1]) p[2] = 0; return !strcmp(s1, s2); }
- 279 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/05(金) 09:27:12 ]
- >>278
別の指摘するよ。 "%f" は、デフォで小数以下6桁精度に丸められる。("%.6f"と同じ) なので、1.9999999 が、2.0 に丸められてしまう。
- 280 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/05(金) 10:44:50 ]
- ふむ、10倍するのも計算誤差で小数点第1位が変わる可能性があるな。
そもそも、外部表現から浮動小数点に変換した時点で誤差が発生するから、 BCD使えという結論か。
- 281 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/05(金) 11:20:41 ]
- 丸め方式はFPUに指定コードを与えれば変えることができる。
そもそも精度を取り違えている。6桁の精度に対して10桁の演算精度があるなら 最下位2桁部分の丸めで精度が狂うことはない。 それは最初の質問者が「文字」で質問していたことでも分かる。 今回の場合無理に比較するのではなくて 二つの引き算した結果の符号をとって(絶対値化) その値から0.1引いた値が正ならfalse というのが一番無難。
- 282 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/05(金) 11:39:11 ]
- >>281
それ、>>263 と同じ。 263は、>>264-265 で否決。
- 283 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/05(金) 12:04:28 ]
- IEEE 754 として、10倍して整数部をとったんじゃだめな具体例を誰かプリーズ。
- 284 名前:名無しさん@お腹いっぱい。 mailto:sage [2008/12/05(金) 13:03:09 ]
- >>283 仮数部フルにつかってたらだめだろ。
せめて整数化して小数部だけにしてからからという前提にシロ
|

|