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

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

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

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

Q&A

解決済

2回答

3164閲覧

【Processing】変数を用いた四則演算が出来ない

programming

総合スコア476

Processing

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

0グッド

0クリップ

投稿2016/12/21 08:36

Processingで、変数を用いた四則演算が出来ません。
変数にはきちんと値が代入されているようですが、なぜでしょうか。

抜粋

Processing

1 float pi_number; 2 int in_point = 0; 3 int point = 0; 4 5(省略) 6 7 pi_number = (in_point / point) * 4; 8 println(pi_number); 9 println(in_point); 10 println(point);

実行例

0.0 112 145

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

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

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

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

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

guest

回答2

0

processingのスクリプトはJava言語の仕様に準じていると思います。

よって型や演算の規則などはJava言語の基本的なところを学んでおくとよいでしょう。
java言語ではintどうしの除算の結果はintとなり、余りは0に近い方向へ丸められます(0.1->0.0, -0.1 -> 0.0)。よって期待通りの除算がしたい場合は分子か分母のどちらかをfloatへキャストしてから演算すればよいです。

java

1pi_number = (in_point / point) * 4; 2 3-> 4// 演算子の優先順は 「キャスト」 > 「乗除算」 > 「代入演算子」です。 5// 乗算と除算は同じ優先度ですがそういう場合は左から右へ順番に計算されるのが仕様です。 6pi_number = (float)in_point / point * 4; 7// 演算子の優先順位に自身がない場合は明示的に括弧を付けておくのもよいでしょう。 8pi_number = (((float)in_point) / point) * 4;

投稿2016/12/21 08:52

KSwordOfHaste

総合スコア18394

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

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

programming

2016/12/21 08:57

キャストという方法があったんですね。 両方の型を全てfloatにするしかないと思っていました。 やり方まで示していただきありがとうございます。
guest

0

ベストアンサー

in_pointがint, pointもintであるため、( in_point / point )の計算結果が(112/145)=>0となってるのでは?

投稿2016/12/21 08:42

tkturbo

総合スコア5572

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

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

programming

2016/12/21 08:47

その通りでした。ありがとうございます。 int型どうしの計算結果は、int型の変数に代入しなくても小数点以下が切り捨てられるんですね...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問