質問編集履歴

2

追記

2022/02/13 02:23

投稿

YOshim
YOshim

スコア1085

test CHANGED
File without changes
test CHANGED
@@ -14,7 +14,7 @@
14
14
  Serial.println(f*k*s);
15
15
  ```
16
16
 
17
- uint32_tもfloatも4バイトなのでキャストすれば出力されるのではと考えましたが、表示されませんでした。
17
+ uint32_tもfloatも4バイトなのでキャストすれば出力されるのではと考えましたが、4バイトのデータに.00が記載されるだけの表示となり、正常に表示されませんでした。
18
18
  ```
19
19
  uint32_t temp32;//データ
20
20
  /*
@@ -23,6 +23,7 @@
23
23
 
24
24
  Serial.println((float)temp32);
25
25
  ```
26
+
26
27
  良い方法があれば教えて頂けませんでしょうか。
27
28
 
28
29
  以上、宜しくお願い致します。

1

説明を具体的に変更

2022/02/13 02:17

投稿

YOshim
YOshim

スコア1085

test CHANGED
File without changes
test CHANGED
@@ -1,14 +1,28 @@
1
- 現在Spresenseを用いてArduino IDEで32bitのデータを取得し10進数で表示しようとしています。
1
+ 現在Spresenseを用いてArduino IDEでセンサから出力される2バイトx2のデータを取得し結合して4バイト(32bit)にしたものを10進数で表示しようとしています。4バイトのデータは単精度浮動小数点の形式で出力されているので小数点を含む10進数でデータを表示したいです。
2
2
  データ取得はできたのですが、小数で表示しようとしてもデータが0.00となってしまいます。
3
3
  コードは以下です。
4
4
 
5
5
  ```
6
+ uint32_t temp32;//データ
7
+ /*
8
+ データ取得の操作、省略
9
+ */
10
+
6
11
  int8_t f = pow(-1, (int)(temp32 >> 31));
7
12
  double k = 1 + (double)(((temp32 & 0x7FFFFF))/pow(2,23));
8
13
  float s = (float)pow(2,(int8_t)((uint8_t)(((temp32 >> 23) & 0xFF)-127)));
9
14
  Serial.println(f*k*s);
10
15
  ```
11
16
 
17
+ uint32_tもfloatも4バイトなのでキャストすれば出力されるのではと考えましたが、表示されませんでした。
18
+ ```
19
+ uint32_t temp32;//データ
20
+ /*
21
+ データ取得の操作、省略
22
+ */
23
+
24
+ Serial.println((float)temp32);
25
+ ```
12
26
  良い方法があれば教えて頂けませんでしょうか。
13
27
 
14
28
  以上、宜しくお願い致します。