回答編集履歴

1

追記

2017/11/28 01:12

投稿

KSwordOfHaste
KSwordOfHaste

スコア18394

test CHANGED
@@ -17,3 +17,55 @@
17
17
  ---
18
18
 
19
19
  なお、Processingではdouble型を扱えないと思っておられるのでしょうか?もしそうだとするとそれは勘違いです。Processing(Javaバージョン)では多くのAPIはfloat型で設計されてますし、Javaと異なり浮動小数点数のリテラルはfloat型です(Javaはdoubleがリテラルのデフォルト)。しかしながらProcessingでもdouble型は使えます。精度落ちを気にするのでしたらProcessing側でもdoubleを用いればよいと思います。
20
+
21
+
22
+
23
+ ---
24
+
25
+ 追記:hskさんにコメントいただいたので追記します。
26
+
27
+
28
+
29
+ > double(rcvMSG[0])はダメでした。
30
+
31
+
32
+
33
+ ここが質問者さんが解決したい肝心の点でしたね!見落としてました。この書き方はC++っぽい雰囲気ですが、Processing(つまりJava)ではキャスト構文はT(expression)とはかけず、(T)(expression)と書きます。しかし文字列から数値への変換はキャストでは書けずメソッドを使う必要があります。hskさんコメントにあるようにProcessingの標準機能としては`parseFloat(文字列式)`が使えますが`parseDouble(文字列式)`は提供されていません。このような場合はJavaの機能を呼び出す必要があります。DoubleはJavaではdouble型(primitive型の一種)をクラスとしてラップするためのクラスですがそこに色々なユーティリティー関数が定義されています。parseDoubleもその一つです。
34
+
35
+
36
+
37
+ `double d = Double.parseDouble(rcvMSG[0]);`
38
+
39
+
40
+
41
+ 以下は蛇足:
42
+
43
+
44
+
45
+ Doubleクラスはjava.langパッケージにあるのですが、Javaではjava.langパッケージのクラスは明示的なimportなしに使えます。Processingでも同様に省略できるようですね。しかしProcessingの標準機能にないJavaのクラスを使う必要がある場合、そのクラスがjava.langにないクラスの場合は明示的にimportすれば使えるということも覚えておくとよいと思います。このくらいまで仕組みが分かっているとProcessingでどうコードを書けばよいか分かり易くなると思います。
46
+
47
+
48
+
49
+ 例:java.utilパッケージのList/ArrayListを使うようなケース
50
+
51
+ ```Processing
52
+
53
+ import java.util.List;
54
+
55
+ import java.util.ArrayList;
56
+
57
+
58
+
59
+ void setup() {
60
+
61
+ List<String> list = new ArrayList();
62
+
63
+ list.add("a");
64
+
65
+ list.add("a");
66
+
67
+ }
68
+
69
+ ...
70
+
71
+ ```