2011-01-28 12 views
10

フロートをF#の文字列に変換するにはどうすればよいですか?F#で浮動小数点数を文字列に変換しますか?

float -> string

+2

実際の結果の文字列をどのように表示するかによって、実際には異なります。あなたが考えるよりも微妙かもしれません:-) –

答えて

12
> sprintf "%f";; 
val it : (float -> string) = <fun:[email protected]> 
+0

<額を払う>感謝。 – Ramy

+0

何らかの理由で11分間答えを選択できませんでした。だから...私は約1日それを忘れてしまった。 – Ramy

3
string;; 
val it : (obj -> string) = <fun:[email protected]> 
+0

'string'はインラインで静的に最適化された関数で、floatとともに使用すると' let x = 3.2 in(# "" x:float#)のようなものに変換されるので、シグネチャはここでは偽りです。 System.Globalization.CultureInfo.InvariantCulture) 'を呼び出します。 '(string:float-> string)のようなシグネチャを制約することは、私が考えるより良い例です。 –

+0

私は同意します。 MSDNには、キャスト演算子としても表示されます。 http://msdn.microsoft.com/en-us/library/dd233220.aspxほとんどの人がsprintf "%f"を使いたいと思っていますので、フロートのフォーマットを自由に設定できます。 – gradbot

8

'文字列' 関数を使用してください:私はこのシグネチャを持つ関数を探しています。

string 6.3f 
+2

さらに、 'int'、' uint32'、 'float32'、' byte'、 'char'、' decimal'などの他の基本型と同等の変換関数を持っています。 – Stringer

2

だけで答えを出し丸める:

(fun (x:float) -> x.ToString()) 

:)

+0

これは、他の人は投稿して投票を行います。 – gradbot

+2

答えを丸めようとしている場合は、 'System.Convert.ToString'を追加することもできます; – Jimmy

+0

@gradbot:速く答えましたが、すべての回答が楽しい文化の微妙な側面を無視しました:-)! –

23

他の人が指摘したように、いくつかのオプションがあります。最も単純なのは、ToStringメソッドを呼び出して、string関数を使用しています。あなたが知っておくべき2つの微妙な違いがあります。ここでは、彼らは私のシステムで何をすべきかです:

> sprintf "%f" 1.2;; 
val it : string = "1.200000" 
> string 1.2;; 
val it : string = "1.2" 
> 1.2.ToString();; 
val it : string = "1,2" 

は、最初の2つは異なりますが、両方は意味をなさないが、なぜ一体が最後のリターン「1,2」をやりましたか?

小数点がカンマ(doh!)で書かれたチェコ語の地域設定があるからです。string関数は不変のカルチャを使用し、ToStringは(スレッドの)現在のカルチャを使用します。いくつかの奇妙な文化(チェコのように:-))これはトラブルを引き起こす可能性があります! 、方法の選択は、おそらくあなたは、文字列を使用する方法に依存します

> 1.2.ToString(System.Globalization.CultureInfo.InvariantCulture);; 
val it : string = "1.2" 

ので - プレゼンテーションのために、あなたはOSの設定を尊重する必要がありますが、生成する:あなたはまた、ToStringメソッドで明示的に指定することができます移植可能なファイルであれば、おそらく不変の文化が望まれます。

+0

良い点、私は「1,2」も持っています。楽しい事実:奇妙な文化は、[wikipedia](http://en.wikipedia.org/wiki/Decimal_mark "小数点記号")に従ってALGOLの開発をほとんどストールしました。 – Stringer

+0

'string'関数と' ToString'メソッドには別の違いがあります。それらを 'null'と' None'に適用してみてください。 'string'は常に空の文字列を返しますが、' ToString'メソッドはクラッシュします。 –

関連する問題