2017-01-08 14 views
0
print(String(Float(2 * (10/9)))) 

なぜこのコードは "2.0"を出力しますか?電卓を使用して
、 "2 *(10月9日)は、" Floatになるあなたは整数で計算している2.222222 .....浮動小数点数式が期待通りに機能しない

+0

@MartinRは(私がいることを前提とし、私は数週間前直面した問題に関連して、このですあなたは忘れましたotについて)、浮動小数点数は科学的表記法として表されますか? –

+0

@AhmadF:申し訳ありませんが、あなたが話している問題は分かりません。しかし、これは浮動小数点数や科学記法とは無関係です。 '10/9'は整数除算であり、Swiftや他の多くのプログラミング言語では' 1'と評価されます。 –

+0

@MartinRご回答いただきありがとうございます。私の問題は、 "。"の後の桁数をどのように数えることができるかということでした。 (右側の)浮動小数点数で、あなたとロブはそれが不可能であると言ってくれました - ありがたいことに - 私の質問は[this one]に重複しているとマークされています(http://stackoverflow.com/questions/588004/is-floating-ポイント - 数学 - 壊れた)。 –

答えて

4

等しく、(整数)をキャストします。

代わりに浮動小数点型(Double)を使用して計算ください:

print(String(Float(2.0 * (10.0/9.0)))) 

しかしキャストする必要はありません:

print(2.0 * (10.0/9.0)) 
1

2.0 *は(10.0/9.0)あなたの期待される結果を与えるだろう。あなたのケースで

、スウィフトは、第一(結果= 2)、文字列(結果=「2.0」)にフロート(結果= 2.0)に変換し、これ

の整数に基づく計算を行います正しい結果を得る、それは読んでください:

print(String(Float(2.0 * (10.0/9.0)))) 

をあなたは、2人のタイプの会話を残すことができる:

print(2.0 * (10.0/9.0)) 
関連する問題