teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2018/04/20 00:54

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  つ [浮動小数点数(float, double)演算の丸め誤差と対策](http://tech-blog.tsukaby.com/archives/740)
2
2
  [追記]
3
+ なぜという質問の答えではないですが^^;
3
4
  ```java
4
5
 
5
6
  package javaapplication1;
@@ -10,7 +11,6 @@
10
11
 
11
12
  /**
12
13
  *
13
- * @author kondo
14
14
  */
15
15
  public class JavaApplication1 {
16
16
 

1

追記

2018/04/20 00:53

投稿

cateye
cateye

スコア6851

answer CHANGED
@@ -1,1 +1,34 @@
1
- つ [浮動小数点数(float, double)演算の丸め誤差と対策](http://tech-blog.tsukaby.com/archives/740)
1
+ つ [浮動小数点数(float, double)演算の丸め誤差と対策](http://tech-blog.tsukaby.com/archives/740)
2
+ [追記]
3
+ ```java
4
+
5
+ package javaapplication1;
6
+
7
+ import java.math.BigDecimal;
8
+ import java.math.RoundingMode;
9
+
10
+
11
+ /**
12
+ *
13
+ * @author kondo
14
+ */
15
+ public class JavaApplication1 {
16
+
17
+ /**
18
+ * @param args the command line arguments
19
+ */
20
+ public static void main(String[] args) {
21
+ // TODO code application logic here
22
+ double d = 10/3.0;
23
+ System.out.println( d + " = " + Long.toBinaryString(Double.doubleToRawLongBits(d)));
24
+ //
25
+ BigDecimal b1 = new BigDecimal("10.0");
26
+ BigDecimal b2 = new BigDecimal("3.0");
27
+ BigDecimal a = b1.divide(b2,20,RoundingMode.HALF_UP);
28
+ System.out.println( a );
29
+ }
30
+ }
31
+ ```
32
+ 結果:
33
+ 3.3333333333333335 = 100000000001010101010101010101010101010101010101010101010101011
34
+ 3.33333333333333333333