18167
クリアまでのタイムを競うゲームでタイムを小数点２桁で表示しているのですが、そのタイムをNSUserDefaultsで保存して結果画面で表示させるまではできました。しかし、保存したタイムをツイートしようとしたら小数点の桁数が正確に出てしまい困っています。

```

    let str = "".stringByAppendingFormat("%.2f",cnt)
    time1.text = str
    
```

このコードで小数点を２桁にしていて

```

    func onPostToTwitter1(sender : AnyObject) {
    
        let ud1 = NSUserDefaults.standardUserDefaults()
        let cnt = ud1.floatForKey("time")　//cntは少数で表示したいタイムです。
    
        myComposeView1 = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
    
    
        myComposeView1.setInitialText(" ただいまのタイムは \(cnt)秒です。 " )
    
        self.presentViewController(myComposeView1, animated: true, completion: nil)
    }
    
```

このコードでツイートを有効にしているのですがこのコードの中に小数点２桁にするコードを書いたらエラーが出ました。

簡単に今回の質問の内容をまとめますと、保存した小数点２桁のタイムがツイートするときは正確に出すぎて（２桁以上）困っているということです。

説明がわかりにくくてゴメンなさい。  
ご回答お待ちしています。
CC BY-SA 3.0
2015-10-28T08:38:19.460
18165
2016-03-26T20:52:46.030
2015-10-28T08:40:07.043
845
11019
question
ios swift xcode
NSUserDefaultsで保存した小数をツイートする方法
Xcode 7、Swift 2.0を前提にして説明します。

```

    let str = "".stringByAppendingFormat("%.2f",cnt)
    time1.text = str
    
```

`String`型で、`NSString`のたくさんのメソッドがそのまま使えるようになりました。

```

    let str = String(format: "%.2f", cnt)
    
```

こういうイニシアライザが使えます。

```

    myComposeView1.setInitialText(" ただいまのタイムは \(cnt)秒です。 " )
    
```

これも、

```

    let theText = String(format: " ただいまのタイムは %.2f秒です。", cnt)
    myComposeView1.setInitialText(theText)
    
```

とすれば、小数点以下2桁で表示できます。

※`NSUserDefaults`に、いちいち浮動小数点数に変換しないで、Stringのまま保存していいんじゃないかという疑問は残りますけど……
CC BY-SA 3.0
2015-10-28T09:13:12.887
18167
2015-10-28T09:13:12.887
7362
18165
answer