[解決済み】swiftでDoubleを最も近いIntに丸めるには?
質問
成長率の計算機を作ろうとしているのですが(
Double
) のように、結果を最も近いIntegerに丸め、そこから再計算するようにします。
let firstUsers = 10.0
let growth = 0.1
var users = firstUsers
var week = 0
while users < 14 {
println("week \(week) has \(users) users")
users += users * growth
week += 1
}
が、今のところできないでいます。
EDIT なんとなくこんな感じでやってみました。
var firstUsers = 10.0
let growth = 0.1
var users:Int = Int(firstUsers)
var week = 0
while users <= 14 {
println("week \(week) has \(users) users")
firstUsers += firstUsers * growth
users = Int(firstUsers)
week += 1
}
常に切り捨てであることは気にならないのですが、以下の点が気に食わないのです。
firstUsers
が変数になり、(次の計算をするために)プログラム全体で変化しなければならず、そうなって欲しくはないのです。
どのように解決するのですか?
があります。
round
で利用可能です。
Foundation
ライブラリ
(にあります(実際には
Darwin
しかし
Foundation
輸入品
Darwin
を使いたい場合がほとんどでしょう。
Foundation
を使用するのではなく
Darwin
直接)
.
import Foundation
users = round(users)
プレイグラウンドでコードを実行し、そして呼び出す。
print(round(users))
出力します。
15.0
round()
は常に切り上げ、小数点以下が
>= .5
のときは下げます。
< .5
(標準的な丸め方)。を使用することができます。
floor()
で四捨五入を強制し
ceil()
を指定すると、強制的に丸められます。
特定の場所に丸める必要がある場合は、掛け算をします。
pow(10.0, number of places)
,
round
で割る。
pow(10, number of places)
:
小数点以下2桁に丸める。
let numberOfPlaces = 2.0
let multiplier = pow(10.0, numberOfPlaces)
let num = 10.12345
let rounded = round(num * multiplier) / multiplier
print(rounded)
出力します。
10.12
注
浮動小数点演算の仕組みに起因します。
rounded
は、必ずしも完全に正確であるとは限りません。どちらかというと、丸めの近似値と考えた方がよいでしょう。表示目的で行うのであれば、数学で丸めるのではなく、文字列フォーマットで数値を整形したほうがよいでしょう。
関連
-
フォールスルーの使用方法概要
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] 数字を切り上げるには?
-
[解決済み] SwiftでIntをStringに変換する
-
[解決済み] なぜクラスではなくストラクチャーを選ぶのか?
-
[解決済み] 2倍値を小数点以下x桁に丸める処理を素早く行う。
-
[解決済み】C#でdoubleを小数点以下2桁で丸める?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] スウィフト 2: !, ?-" オプション型「...」の値がアンラップされていない"
-
[解決済み] Swift presentViewController
-
[解決済み] 型の不変値に変異型メンバを使用することはできません。
-
[解決済み] Swift言語におけるエクスクラメーションマークの意味とは?
-
[解決済み] Error: this class is not key value coding-compliant for key tableView.' [重複] を修正する方法。
-
[解決済み] Swiftでコアデータを日付(時間だけでなく)でソートする
-
[解決済み] Swiftの'open'キーワードは何ですか?
-
[解決済み】Swiftで変数の型またはクラスを表示するにはどうすればよいですか?
-
[解決済み】SwiftでFloatをIntに変換する。
-
[解決済み】dyld: ライブラリがロードされません。rpath/libswift_stdlib_core.dylib です。