我想写变量值的字符串格式化的方式的数量,根据以下内容:字符串格式化根据小数点
最大小数点为3 如果有小于3个显著百分点,比少写。
例如: 编号1.53848将写为1.538 编号1.0将写为1(而不是1.000)。
val variable1 = 1.
val variable2 = 1.53848
language = "%s average value is %.3f and %.3f".format(variable1, variable2)
我想写变量值的字符串格式化的方式的数量,根据以下内容:字符串格式化根据小数点
最大小数点为3 如果有小于3个显著百分点,比少写。
例如: 编号1.53848将写为1.538 编号1.0将写为1(而不是1.000)。
val variable1 = 1.
val variable2 = 1.53848
language = "%s average value is %.3f and %.3f".format(variable1, variable2)
这应该做的伎俩:
def format(d: Double) =
BigDecimal(d).scale match {
case x if x > 2 => "%.3f".format(d)
case _ => d.toInt.toString
}
刚刚删除零(以及可能的逗号/分隔符)怎么样?
def formatted(d: Double) = "%.3f".format(d).replaceAll(",?0+$", "")
这工作很好,除了以下情况:当输入变量1 = 1.0时,我得到结果1.(我不想要的期限,我想得到1) – user3370773 2014-11-23 20:35:49
对不起,瑞典的语言环境,你将不得不用正则表达式中的逗号(它将瑞典的分数)与\\替换。以便这段时间被删除。 – johanandren 2014-11-23 20:41:22
我写道:def formatted(d:Double)=“%.3f”.format(d).replaceAll(“。?0 + $”,“”)。我得到以下(不需要的结果):变量1 = 1.2被格式化为1.,变量2 = 2.302684被格式化为2.303,变量3 = 1. – user3370773 2014-11-23 20:54:41
四舍五入是不是一个问题。我不介意这个数字是否会被舍入。但我想1.5导致1,1,1导致1.204964导致1.204或1.205 – user3370773 2014-11-23 21:23:55