Как преобразовать float в строку в F #. Я ищу функцию с этой подписью:
float -> string
Ответ 1
> sprintf "%f";;
val it : (float -> string) = <fun:[email protected]>
Ответ 2
Как отмечали другие, есть несколько вариантов. Два простейших - это вызов метода 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"
Таким образом, выбор метода, вероятно, будет зависеть от того, как вы хотите использовать строку - для презентации вы должны соблюдать настройку ОС, но для создания переносных файлов вы, вероятно, хотите иметь инвариантную культуру.