質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

2回答

1529閲覧

Sliderのvalueの期待値が「0」だが「2.980232E-08」と表示される

llemon

総合スコア17

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/09/30 14:14

Unity2D で開発をしています。
UI の Slider の value の値を減らすメソッドを作りましたが、value が狙った値にならず困っています。

初期値はvalueの値は1です。このメソッド一回で、valueの値から0.2fずつ減らします。
このメソッドの引数は0.2fで、このメソッド自体を定期的に呼び出しています。

結果、変数 value の値が1→0.8→0.6→0.4→0.2と減っていきますが、その次は0ではなく2.980232E-08となってしまいます。

また、別ケースとして引数を0.3fとしたとき、value の値が1→0.7→0.4と減っていきますが、その次は0.1ではなく、0.09999996 となってしまいます。

どうすれば2.980232E-08ではなく0となるでしょうか。
また、0.1ではなく、0.09999996 となるでしょうか

メソッドは以下の通りです。
よろしくお願いします。

c#

1 // スライダー反映処理 2 public void upDownHpValue(float upDownValue) { 3 4 // スライダーオブジェクトの取得 5 Slider hpSlider = HpSlider.GetComponent<Slider>(); 6 7 // 現在のvalueの値取得 8 float valueNow = HpSlider.GetComponent<Slider>().value; 9 10 // valueに変化量反映 11 valueNow = valueNow - upDownValue; 12 13 // ゲージに変化後の値を設定 14 hpSlider.value = valueNow; 15 16 } 17

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

float型を使う限り避けられません。
float型は(2進の)浮動小数点数というもので、0.1などの特定の値を正確に表せない特性があります。
対処法はいくつかあります。
・10倍などして整数で計算し、表示が必要ならその時だけ1/10にして表示する。
・ある値と一致するかは「差が十分に小さいか」で判定、表示が必要なら適宜丸めて表示する。
・10進浮動小数点数型を使う。

投稿2018/09/30 14:40

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

10から2ずつへらして、使うときに0.1を掛けてください。

投稿2018/09/30 14:39

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問