回答編集履歴

1

小数部の対応について検討。

2018/10/20 14:18

投稿

pepperleaf
pepperleaf

スコア6383

test CHANGED
@@ -8,9 +8,9 @@
8
8
 
9
9
  ```C
10
10
 
11
- s_int = x.a + floor(x.b * GoldenNum); // 小数部は切り捨てだからこれで良いと思う
11
+ s_int = x.a + floor(x.b * q); // 小数部は切り捨てだからこれで良いと思う
12
12
 
13
- t_int = y.a + floor(y.b * GoldenNum);
13
+ t_int = y.a + floor(y.b * q);
14
14
 
15
15
  ```
16
16
 
@@ -20,9 +20,9 @@
20
20
 
21
21
  ```C
22
22
 
23
- s_int = (int)(x.a + x.b * GoldenNum); // 小数部は切り捨てだからこれで良いと思う
23
+ s_int = (int)(x.a + x.b * q); // 小数部は切り捨てだからこれで良いと思う
24
24
 
25
- t_int = (int)(y.a + y.b * GoldenNum);
25
+ t_int = (int)(y.a + y.b * q);
26
26
 
27
27
  ```
28
28
 
@@ -37,3 +37,19 @@
37
37
  現在の方法では、double で計算しても同じなので、もう一つしっくりこないです。
38
38
 
39
39
  回答依頼がありましたので、一応。。。
40
+
41
+
42
+
43
+ [追記]
44
+
45
+ 小数部の比較ですが、
46
+
47
+ ```C
48
+
49
+ int x_dec = (int)(((x.b * q) - floor(x.b * q)) * q + 0.1);
50
+
51
+ ```
52
+
53
+ とすれば、x の小数部に対応する整数が取得できると思うので、y についても同様に求め、比較すれば、良いと思うのですが、どうでしょう。 (時間が取れれば、確認予定)
54
+
55
+ なお、式内の +0.1 は、浮動小数の誤差対策です。