我有這段代碼(不幸的是它不起作用):
object Number
{
case class Number(number: Float)
def fromString(value: String): Either[Throwable, Number] =
{
Try("%.2f".format(value).replace(',', '.').toFloat)
.map(Number)
.toEither
}
}
def main(args: Array[String]): Unit = Number.fromString("100,555")
我的目標是有一個浮動,看起來像這樣:
100.56
但現在的輸出是:
左(java.util.IllegalFormatConversionException:f!= java.lang.String)
所以我的問題是:我怎樣才能得到我想要的輸出?
或者是否有一個函式來格式化和舍入一個像 PHP 中的 number_format 這樣的數字
uj5u.com熱心網友回復:
轉換可以這樣完成:
def fromString(value: String): Either[Throwable, Number] =
Try(Number(value.replace(',', '.').toFloat))
.toEither
在內部將二進制四舍五入是一個壞主意,但這就是它的作業方式:
def fromString(value: String): Either[Throwable, Number] = {
Try(
Number(math.round(value.replace(',', '.').toFloat * 100.0) / 100.0f)
).toEither
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496950.html
標籤:斯卡拉
