Scala中的数字格式?
发布时间:2020-12-16 09:23:43 所属栏目:安全 来源:网络整理
导读:我有一个从文件动态变化的输入读取.数字是Int或Double.为什么Scala在每个双号码后打印.0?是否有一种Scala打印方式与读取相同的方式? 例: var x:Double = 1println (x) // This prints '1.0',I want it to print '1'x = 1.0 // This prints '1.0',which is
我有一个从文件动态变化的输入读取.数字是Int或Double.为什么Scala在每个双号码后打印.0?是否有一种Scala打印方式与读取相同的方式?
例: var x:Double = 1 println (x) // This prints '1.0',I want it to print '1' x = 1.0 // This prints '1.0',which is good 我不能使用Int,因为我得到的一些输入是双打.我不能使用String或AnyVal,因为我执行一些数学操作. 谢谢, 解决方法scala> "%1.0f" format 1.0 res3: String = 1 如果您的输入是Int或Double,您可以这样做: def fmt(v: Any): String = v match { case d : Double => "%1.0f" format d case i : Int => i.toString case _ => throw new IllegalArgumentException } 用法: scala> fmt(1.0) res6: String = 1 scala> fmt(1) res7: String = 1 scala> fmt(1.0f) java.lang.IllegalArgumentException at .fmt(<console>:7) at .<init>(<console>:6) at .<clinit>(<console>) at RequestResult$.<init>(<console>:4) at RequestResult$.<clinit>(<console>) at RequestResult$result(<console>) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.Dele... 否则,您可能会使用BigDecimals.他们很慢,但是他们确实有规模,所以“1”,“1.0”和“1.00”都是不同的: scala> var x = BigDecimal("1.0") x: BigDecimal = 1.0 scala> x = 1 x: BigDecimal = 1 scala> x = 1.0 x: BigDecimal = 1.0 scala> x = 1.000 x: BigDecimal = 1.0 scala> x = "1.000" x: BigDecimal = 1.000 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容