преобразовать float в строку в F #? - PullRequest
12 голосов
/ 29 января 2011

Как мне преобразовать число с плавающей точкой в ​​строку F #.Я ищу функцию с этой подписью:

float -> string

Ответы [ 5 ]

24 голосов
/ 29 января 2011

Как отмечали другие, есть несколько вариантов. Двумя простейшими являются вызов метода ToString и использование функции string. Между этими двумя понятиями есть тонкая разница, о которой вам следует знать. Вот что они делают в моей системе:

> 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"

Первые два отличаются, но оба имеют смысл, но почему, черт возьми, последний возвратил «1,2»?

Это потому, что у меня есть чешские региональные настройки, в которых десятичная точка записывается в виде запятой (doh!). Итак, функция string использует инвариантную культуру, а ToString использует текущую культуру (потока). В некоторых странных культурах (таких как чешский язык :-)) это может вызвать проблемы! Вы также можете указать это явно с помощью метода ToString:

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

Таким образом, выбор метода, вероятно, будет зависеть от того, как вы хотите использовать строку - для представления вы должны соблюдать настройки ОС, но для создания переносимых файлов вам, вероятно, потребуется инвариантная культура.

14 голосов
/ 29 января 2011
> sprintf "%f";;
val it : (float -> string) = <fun:it@8>
8 голосов
/ 29 января 2011

Используйте функцию 'string'.

string 6.3f
3 голосов
/ 29 января 2011
string;;
val it : (obj -> string) = <fun:it@1>
2 голосов
/ 29 января 2011

Просто, чтобы округлить ответы:

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

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...