質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

844閲覧

Kotlinの電卓アプリ開発で、小数点ボタンを使えるようにしたい

awdf

総合スコア2

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2022/08/17 16:17

前提

初のKotlinで電卓アプリを開発しております。

実現したいこと

小数点の追加、計算が出来るようにしたい。

発生している問題・エラーメッセージ

電卓の上の数字を文字列にし、数字ボタンを押すことで文字列の後ろに追加するといった使用にしたのですが、小数点を追加しようとすると、アプリが終了してしまいます。
この場合、文字列化している変数型をFloat型にするべきでしょうか。
また、その場合、数値、小数点をどのように追加すればよいか分かりません。
ご教授頂ければ幸いです。

該当のソースコード

private var calculatedResult = "0" // 電卓の上に表示される数字の部分 // 数字ボタンが押されたときの処理 fun commandNumber(view: View) { val commandId: Button = findViewById(view.id) val command = commandId.text.toString() var intCalculatedResult = calculatedResult.toInt() if (calculatedResult != "0" && command != "+/-") { calculatedResult += command } else if (command == "+/-") { intCalculatedResult = -intCalculatedResult calculatedResult = intCalculatedResult.toString() } else { calculatedResult = command } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

awdf

2022/08/21 15:19

補足です。 アプリの強制終了についてですが、数値の表示部分の型指定子を文字列にしていたからだと考えております。 実際にDouble型にしたらアプリが終了しなくなりました。
guest

回答1

0

ベストアンサー

提示されているソースからすると、「未確定の数値データは文字列」で「計算はInt型に変換して実施」というような作りなのだと思います。

「アプリが終了してしまいます」のときの情報が無しなので、推測ですが、小数点のある文字列をIntに変換しようとしてエラーになっているのでしょう。

小数を扱うのであれば、「未確定の数値データは文字列」はそのままで,計算を小数点をサポートする型にする必要があるでしょう。
精度が出せるという意味では、BigDecimalがいいと思いますが、演算が面倒なので、最初はDoubleあたりでやるのが楽かもしれません。

ただし、たぶん、数値計算のところをDoubleにしただけでは、常に小数点が付いてしまうなど表示回りでかなり苦労するんじゃないかと思います。

投稿2022/08/18 01:21

TakaiY

総合スコア12765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

awdf

2022/08/21 15:16

ご回答頂き、ありがとうございます。 おっしゃるとおりで、電卓に表示される数値は文字列に、計算はInt型に直して処理しております。 アプリ終了に関して記載していませんでした。申し訳ないです... そこについては、小数点ボタンを押したときに適応されている型指定子が文字列になっているからだと思っています。実際にDouble型にしたらアプリが終了しなくなりました。 しかし、最初に表示される数値が「0」ではなく、「0.0000」となってしまいます。こちらの対処についても、教えて頂けるとありがたいです!
TakaiY

2022/08/21 15:24

> 「0.0000」となってしまいます 回答に書いたとおりです。 単にDoubleなどを文字列にすればそうなります。 小数部分が 0ならそれを表示しないようにしたいのであれば、それを判定してそのように文字列を変形するしかないでしょう。 他にも、桁数が表示桁数より多くなった場合にどうするかなど、いろいろ考えなければならないことは多いと思いますが、いちいち対応するしかありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問