質問編集履歴

2

ソースコードの変更、新しい疑問点の追加

2019/10/23 02:38

投稿

ysda
ysda

スコア65

test CHANGED
File without changes
test CHANGED
@@ -36,7 +36,7 @@
36
36
 
37
37
  ↓掛け算のコード
38
38
 
39
- ```
39
+ ```swift
40
40
 
41
41
  var kakeru1:NSDecimalNumber = NSDecimalNumber(value: previousNumber)//previousNumber=計算式の左辺。Double型のため、NSDecimalNumberに変換
42
42
 
@@ -49,3 +49,71 @@
49
49
  Result.text = String(kakeruresult2)//Result=電卓の計算結果表示用ラベル
50
50
 
51
51
  ```
52
+
53
+
54
+
55
+ ###追記
56
+
57
+ y_waiwai様からコメントでいただいた[リンク](https://oversleptabit.com/archives/907)を元に、以下のようにコードを変更いたしました。
58
+
59
+ ```swift
60
+
61
+ var leftNumber = NSDecimalNumber()//計算式の左辺
62
+
63
+ var rightNumber = NSDecimalNumber()//計算式の右辺
64
+
65
+ var calculateResult = [String]()
66
+
67
+
68
+
69
+ calculateResult = [leftNumber.multiplying(by: rightNumber).stringValue]
70
+
71
+ Result.text = String(calculateResult)
72
+
73
+
74
+
75
+ ```
76
+
77
+
78
+
79
+ このように記述をしたところ、以下のようなエラーが表示されました。
80
+
81
+
82
+
83
+ ```
84
+
85
+ Initializer 'init(_:)' requires that '[String]' conform to 'LosslessStringConvertible'
86
+
87
+ ```
88
+
89
+
90
+
91
+ どうやらLosslessStringConvertibleというプロトコルの宣言をする必要があるみたいだったので、以下のコードも追加いたしました。
92
+
93
+
94
+
95
+ ```swift
96
+
97
+ class ViewController: UIViewController,LosslessStringConvertible {
98
+
99
+ required init?(_ description: String) {
100
+
101
+
102
+
103
+ }
104
+
105
+
106
+
107
+ required init?(coder: NSCoder) {
108
+
109
+ fatalError("init(coder:) has not been implemented")
110
+
111
+ }
112
+
113
+ ```
114
+
115
+
116
+
117
+ ここまで行ったのですが、ググってみてもどのようにすれば見当がつかない状態になっています。
118
+
119
+ 最終的に[String]型をString型に変換したいのですが、どのようにすればいいのでしょうか?

1

内容を追加

2019/10/23 02:37

投稿

ysda
ysda

スコア65

test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  という方法をとっています。
30
30
 
31
- しかし、この方法だと整数同士の計算でも余計な小数点がついてしまため、それを解消するためにNSDecimalNumber型を直接String型に変換したいです。
31
+ しかし、この方法では整数同士の計算でも余計な小数点がついてしまり、計算によっては誤差が出てしまったりするため、それを解消するためにNSDecimalNumber型を直接String型に変換したいです。
32
32
 
33
33
 
34
34