我正在尝试用美元符号对一个值(浮点数)进行纠正。但是我说的是价值而不是美元符号。那么我该如何证明美元符号的合理性。
println(f"$$${10.5340}%40.2f")
$ 10.53
谢谢
答案 0 :(得分:1)
这是在java.text.NumberFormat.getCurrencyInstance上使用字符串插值的一种方法:
import java.text.NumberFormat.getCurrencyInstance
val amount1 = f"${getCurrencyInstance.format(10.5340)}%40s"
val amount2 = f"${getCurrencyInstance.format(100.5340)}%40s"
val amount3 = f"${getCurrencyInstance.format(1000.5340)}%40s"
// amount1: String = " $10.53"
// amount2: String = " $100.53"
// amount3: String = " $1,000.53"
如果是其他国家/地区的货币,例如法国:
import java.util.{Currency, Locale}
val currInstance = getCurrencyInstance
currInstance.setCurrency( Currency.getInstance(new Locale("fr", "FR")) )
val amount4 = f"${currInstance.format(123.456)}%40s"
// amount4: String = " EUR123.46"
答案 1 :(得分:1)
分两步进行:
类似的东西:
println(f"${f"$$${10.5340}%.2f"}%43s")
结果(总宽度与数字10.5340
无关)
$10.53
具有许多不同数字的示例:
for (n <- List(1234.567, 0.33, 1.0, 42.0, 45.2)) {
println(f"${f"$$${n}%.2f"}%43s")
}
结果:
$1234.57
$0.33
$1.00
$42.00
$45.20
我希望这是一个玩笑的应用程序-您不是真的在使用double
s来计算真钱吗?
答案 2 :(得分:0)
如果重要的是小数位应与任何数字对齐(例如,填充以使小数点从左边开始是40个字符,而不是填充40个字符(无论数字位数)),我看不出这是怎么回事直接通过Scala的格式化程序完成-但是可以借助Java的DecimalFormat
实现:
scala> import java.text._;
import java.text._
scala> println(f"${new DecimalFormat("$###.##").format(10.5340)}%40s")
$10.53
scala> println(f"${new DecimalFormat("$###.##").format(1000.5340)}%40s")
$1000.53
答案 3 :(得分:0)
代码:
println(f"${"$"}%40s${10.5340}%.2f")
输出:
10.53美元
答案 4 :(得分:0)
尝试一下:
printf("%40c%.2f%n", '$', 10.5340)