mixiのレビュー機能、4.60≠4.59?

このQ&Aのポイント
  • mixiのレビュー機能での平均満足度が4.60となる筈なのに、4.59と表示される現象が発生しています。
  • mixiユーザやプログラムの出来る方で、この現象の原因に心当たりがある場合、教えてください。
  • mixiのレビュー機能において、特定の条件下で平均満足度の表示が正しくなくなるバグが起こっている可能性があります。有名な除算のバグなどが考えられます。
回答を見る
  • ベストアンサー

mixiのレビュー機能、4.60≠4.59?

ちょっと気になっただけなのですが、気にし出すと止まらず…。 mixiユーザやプログラムの出来る方で、原因に心当たりが有りましたら教えて下さい。 mixiには、本やら映画やらに皆が1~5で点数を付けて、レビューする機能が有ります。 また、各人の点数を平均した「平均満足度」もx.xxの形で表示されるのですが、 50人の合計が230点となる場合("お笑い 男の星座2 私情最強編"等)や、 10人の合計が46点となる場合("改訂第2版 Java言語プログラミングレッスン (上)" 等)、 5人の合計が23点となる場合("Java言語で学ぶデザインパターン入門 マルチスレッド編" 等)などに 平均満足度が4.60となる筈なのに、4.59と表示されます。 4.80や4.40や3.60など、他の場合にはちゃんとキリのいい平均になります。 裏で何が起こっているのか、気になってしょうがありません。 何か、有名な除算のバグとかそういうのが有るのでしょうか?

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

コンピュータで主に使われている2進数では2のべき乗の和の数値しか表現できません。0.1 や 0.01 は2のべき乗の和で表されないため正確に表現できません。 そのため、小数点以下の数値を扱うのはプログラム側で工夫が必要になりますが、工夫をしていなかったり、足りなかったりすると計算誤差が出ます。

elmsley
質問者

お礼

なるほど! ということは…と思い、調べてみると 4.10→4.09 ○ 4.30→4.30 ○ 3.10→3.10 ○ となっていました。 整数部込みで、10桁の2進数で表現されている…のでしょうね。 大変スッキリしました。ありがとうございます。

関連するQ&A

  • 学校で課題を出されて困っています(;´д`)

    問題ですが、5回テストをして、各テストの点数、合計点、平均点、最高点、最低点を求めて表示するプログラムを作成せよ!という問題です。画面イメージとして、 C:\java Syuukei 点数: 80 : 100 : 70 : 60 : 90 [5回] 合計点 : 400 平均点 : 80.0 最高点 : 100 最低点 : 60 C:\ こういうふうにコマンドプロンプトに表示されるプログラムです。 今月習い始めたばかりで私にはとてつもなく難しいです・・・。 どうか力をかして下さい。よろしくお願いします。(ちなみに提出が明日・・・)

    • ベストアンサー
    • Java
  • どこが間違っているのか教えてください。。

    C言語の勉強をしています。 プログラムを作成してみましたが、うまくいきません。 どこが間違っているのか、なぜそうなるのか、教えていただけると助かります。 よろしくお願いします。 あるクラスの試験の点数を整数で繰り返し入力し、点数の合計と平均点を出力するプログラムを作成しなさい。 点数は、0点以上100点以下とし、この範囲外の点(0点未満または100点より大きい点)が入力されたときは、入力を終了し、点数の合計と平均点を出力する(最後に入力された範囲外の点は集計の対象としない)。 また、平均は小数点以下2桁まで出力する。 繰り返しの命令は、何を使ってもよい。 ▼実行例 点数:10 点数:100 点数:20 点数:35 点数:120 合計:165点 平均: 41.25点 ******************************************* 考えたプログラム #include<stdio.h> int main(void) { int   ten,hito,goukei; double           heikin; goukei=0; hito=0; while(1){ printf("¥n点数:"); scanf ("%d", &ten); if(ten<0||100<ten) break; goukei=goukei+ten; hito=hito+1; break; } printf("¥n合計:%d点",goukei); heikin=(double)goukei/(double)hito; printf("¥n平均:%.2lf点",heikin); }

  • WAISの検査結果とADHDについて

    こんにちは! タイトルの件に関する質問です。 Twitterなどを見ていて、自分にも思い当たる節があると感じ、ADHDではないかと気になったので病院に行き、WAISという試験を先日受けました。 検査をうけて、先生からはグレーゾーンだと言われましたが、ネットなどでは自分よりも点数がはるかに高い方や各項目の点数が私と近い方でも診断をされていたりしますが判断の基準はどこにあるのでしょうか?? 自分で調べた限り、点数差についてを書かれていることが多く、私は全部の項目が均等に低いので該当しないという解釈でよろしいのでしょうか? 判断をされたいという訳ではありませんが、気になったので質問をしました。 また、先生からは薬の服用も必要だったら考えてみても良いと言われましたが、副作用が気になります。判定された訳ではないので、極力飲まない方がいいですよね? 改善できるならと病院に行ったのですが、グレーゾーンということは病気ではなく単純に頭が悪いと言うことですよね?今後、どのように短所を改善すればいのでしょうか…? 長くなりましたが、下記が私の点数です。 スマフォからの投稿なので表記が見にくかったらすみません!! 【言語理解】 評価点合計32、IQ104、パーンタイル順位61、平均 【知覚統合】 評価点合計16、IQ70、パーセンタイル順位2、特に低い 【作動記憶】 評価点合計20、IQ79、パーセンタイル順位8、境界線 【処理速度】 評価点合計19、IQ97、パーセンタイル順位42、平均 【言語性IQ】94 平均 【動作性IQ】82 境界線 【全検査IQ】87 平均の下 細かな項目は、類似と絵画配列が良く、算数と積木が低かったです。 以上です。よろしくお願いいたします。

  • プログラミング分からないので教えてください

    【演習1】 コマンド引数で台形の上底、下底、及び高さを指定して実行すると、台形の面積を算出し表示するプログラムを作成せよ。ただし、以下の条件を満たすこと。 条件: (1)コマンド引数が不足していた場合は<実行例(2)>のようにエラーメッセージを表示する。 (2)上底、下底、高さ、及び面積は実数値として処理する。 (3)台形の上底、下底、及び高さを引数として受け取って面積を算出するユーザー関数を作成し使用する。 (4)面積の表示はmain関数で行い、<実行例(1)>のように表示する。 そのとき、上底、下底、高さは小数点以下2桁、面積は小数点以下3桁で表示する。 <実行例(1)> Z:\>ee1001 3.5 4.2 8.37↓ 上底3.50,下底4.20,高さ8.37の台形の面積は32.224 <実行例(2)> Z:\>ee1001 3.5 4.2↓ 引数が足りません。 【演習2】 点数を3つキー入力すると、3つの点数の合計点と平均点を表示するプログラムを作成せよ。ただし、以下の条件を満たすこと。 条件: (1)点数は整数で入力する。。 (2)入力された3つの点数のうち1つでも0未満だった場合は、<実行例(3)>のようにエラーメッセージを表示する。 (3)3つの点数を受け取って、3つの点数の合計点と平均点を算出するユーザー関数を作成し使用する。また、合計点は整数、平均点は実数で算出する。 (4)合計点と平均点の表示はmain関数で行い、<実行例(1)(2)>のように表示する。 そのとき、合計点は全4桁、平均点は全6桁小数点以下1桁で表示する。 <実行例(1)> 点数: 80↓ 点数: 65↓ 点数: 98↓ 合計点 243 平均点 81.0 <例実行(2)> 点数: 80↓ 点数: -1↓ 点数: 98↓ 点数は0以上で入力してください よろしくお願いします

  • C言語のプログラムについて質問です。

    C言語のプログラムについて伺いたいことがあるんですが5人くらいの名前、数学、英語、国語の点数を入力して各教科の最高点、最低点、平均点、それぞれの数+英+国の合計点を表示するプログラムを構造体を使って作りたいと思っています。 もしよろしければ事細かに教えていただけないでしょうか。 よろしくお願いします。

  • C言語プログラムの作成方法がわかりません

    キーボードから5人の点数を入力すると平均点を表示するようにし、平均点以上の学生の点数を表示させるC言語のプログラムの作成方法を教えてください

  • -1を使う???

     私は今C言語の学習をしています。しかし以下の問いのプログラムがなかなか出来ません・・・。どうか助けてください。お願いしますm(__)m 【問】while文とif文を使う問題 (1)キーボードから各教科のテストの点数を入力し、その合計と平均点を出力しなさい。ただし、入力データの終わりには-1を使うようにして、何科目でも対応できるようにすること。 (2)(1)と同様にキーボードから各教科のテストの点数を入力し、80~100までは優、65~79までは良、50~64までは可、0~49までは不可とし、それぞれの各科目数を出力しなさい。 (3)(1)と同様にキーボードから各教科のテストの点数を入力し、最高点と最低点を出力しなさい。 私は(1)に対してまず、科目数が決められている場合の合計と平均を求めるプログラムを作りました。 そのあと、それを何科目でも対応できるようにfor文を使い書き換えました。 そしてif文をつかって-1が入力されたら、breakとしました。しかしそれではwhile文をまったく使っていないのです・・・。どうしたらいいのでしょう? 何科目にでも対応させるというのは・・・?

  • C言語が分からないので分かる方説明お願いします

    C言語が分からないので分かる方説明お願いします #include<stdio.h> int main(void) { int i; int tensu[5]; int sum=0; printf(”点数を入力してください。”); for(i=0;i<5;i++){ printf(”%2d番:”,i+1); scanf(”%d”,&tensu[i]); sum+=tensu[i]; } printf(”合計点:%5d¥n”,sum); printf(”平均点:%5.1f¥n”,(double)sum/5); return(0); } 実行すると 点数を入力してください。 1番:95 2番:83 3番:85 4番:63 5番:89 合計点:415 平均点:83.0 できるだけ詳しく教えてください

  • 「緊急」期末テストまで1週間ありません・・・・

    平均点数49.8点です。5教科の合計点数249点なんですけど    次の期末テストまで1ヶ月がありません。なので効率が良い勉強方法を教えてください   本当にwwwwwwwwwwwww

  • 構造体と関数について質問です

    私はC言語の勉強を始めて2ヶ月の初心者です。 課題に取り組んでいるのですが、まったく進めないので助けていただきたいと思い質問しました。 課題 A君B君C君の3人の国語・算数・理科・社会の点数を入力し、それぞれの合計点と平均点、1番高かった教科を表示する。 というものです。 構造体はstruct subjectData member[3]で 関数は入力をする関数と合計点を出す関数平均点を出す関数最高点を出す関数を使ってということなんですが、まったくわからなく手がつけられないもので、質問させていただきました。 参照渡しを使えということも言われ、参考書をみて戦っているんですがどうも理解ができません。 解説とソースを載せていただけたら助かります。 どなたかよろしくお願いします!