2016-04-09 16 views
2

Ondalık değeri F # olarak tanımlanmış bir hassasiyetle dize olarak biçimlendirmek istiyorum. Printf/sprintf'i kullanırken alıyorum:F # içinde printf/sprintf kullanarak tanımlı doğrulukla bir dize olarak ondalık biçimlendirme nasıl?

let sdecimal = sprintf "%.2M" 0.1234M;; 

val sdecimal: string = "0,1234" float için

iken çalışır.

let sfloat = sprintf "%.2f" 0.1234;; 

val sfloat: Ben ilk ayrıntılı ve kaşer hem hangi yüzer için döküm var gibi dize = "0.12"

görünüyor.

C# 'in .ToString() biçimlendirmesini kullanmanın daha basit bir yolu var mı?

+2

Float ile aynı formatı kullanın: "sprintf"% .2f "0.1234M ;; – Petr

cevap

1

Tamam.

let sfdecimal = sprintf "%.2f" 0.1234M;; 

val sfdecimal: biçimlendirme şamandıra için olup olmadığı çalışır dize = @scrwtp tarafından Açıklamalarda belirttiği şekilde "0.12"

tip bilgiler hala korunur.

+2

Bu kesinlikle doğru değildir - biçim belirteçleri hala yazılmamış, sadece eşleme bire bir değildir . '% f', herhangi bir kayan nokta türüyle (' Tek ',' Çift ',' Ondalık ') eşleşir, ancak 'int' değil' String.Format' tür bilgisi yoksayılır. – scrwtp

İlgili konular