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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

1回答

517閲覧

小数値に"f"や"d"を付けるべきか?

退会済みユーザー

退会済みユーザー

総合スコア0

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2018/12/21 06:24

編集2019/01/07 06:26

Processingにおいて1つ、気にする必要もないような疑問です。


Java

1float a = 0.1; // コンパイルエラー 2float b = 0.1f; 3float c = 0.1F; 4 5double d = 0.1; 6double e = 0.1d; 7double f = 0.1D;

Javaではfloatの値の後にfF、doubleの値にはdDもしくは無印というように、floatdoubleはハッキリ区別されますが、

float a = 0.1; // エラーにならない

processing-javaにおいては、特に区別がないようです。それどころか、

float a = 0.123456789.....;

このようにどんどん数字を書き連ねてもエラーが出ることはないようです。(自分が試した際には100文字ほど書きました)


Processingのリファレンスでfloatdoubleの仕様を確認してみましたが、それらしい記述はありませんでした。
こんなことに神経質になるのも変な話ですが、fdを付けることによるパフォーマンスの違いなどは存在するのでしょうか?また、「こうしたほうがいい」などのアドバイスもありましたら教えていただけるとありがたいです。

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

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

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

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

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

guest

回答1

0

> fやdを付けることによる違いなどは存在するのでしょうか?

あります、以下のサンプルを実行してみてください。

Processing

1void setup() 2{ 3 System.out.println(Double.toString(0.1234567890123456789f)); 4 System.out.println(Double.toString(0.1234567890123456789d)); 5 System.out.println(Double.toString(0.1234567890123456789)); 6}

darw() メソッドが無いので、表示される描画ウィンドウには意味はありません。
ProcessingIDE の下の方にある Consle タブをクリックしてみてください。
以下のようにこのプログラムの出力が表示されているはずです。

Console

10.12345679104328156 20.12345678901234568 30.12345679104328156

以上からわかることは、定数の表記において、

  • f を付与した場合は単精度(float)型の値の定数となる
  • d を付与した場合は倍制度(double)型の値の定数となる
  • 何も付与しない場合は単精度(float)型の値の定数となる

ということです。

> また、「こうしたほうがいい」などのアドバイスもありましたら教えていただけるとありがたいです。

上記の結果から、倍精度(double)の精度が必要な場合は、定数の記述には必ず d が必要ということがいえると思います。

Java と Processing のエラーの違いについて

基本的に、Java と Processing は同じものなので、
コンパイルオプションの違いによるものではないかと思いますが、
Processing のコンパイルオプションの設定がどうなっているかまで
調べきれませんでしたので、この点についてははっきりしたことは
お答えできません、申し訳ありません。

回答の検証に使ったバージョン

私がつかった Processing と java のバージョンは以下の通りです。
バージョンによっては、上記とは違う動作があるかもしれません。

Processing のバージョン

3.0.1

Java のバージョン

java version "1.8.0_71" Java(TM) SE Runtime Environment (build 1.8.0_71-b15) Java HotSpot(TM) 64-Bit Server VM (build 25.71-b15, mixed mode)

投稿2019/01/06 17:01

kozuchi

総合スコア1193

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

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

退会済みユーザー

退会済みユーザー

2019/01/07 06:25

丁寧な回答ありがとうございます。 しかし、これは私の書き方が悪かったのですが、fやdをつけた際のパフォーマンスの違いについての質問でした。自分の中では型の違いなどはしっかり理解していたので、型の違いについてではないということを書き損ねていました、ごめんなさい。 しかし、Javaと違ってfやd無しではfloatになるということは今回初めて知りました。有益な情報をありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問