如何将J#
中的double
值格式化为小数点后的两位数字(不进行算术运算)?
double x = 3.333333;
String s = String.Format("rWork done: {0}%", new Double(x));
System.out.print(s);
我认为J#
几乎与Java
相同,但以下Java
代码给出了J#
的不同结果:
double x = 3.333333;
String s = String.format("rWork done %1$.2f%%", x);
System.out.print(s);
(由于J#
几乎是死的,不支持,我使用Visual J# 2005
)
String.format()
API是在Java 1.5中引入的,因此您无法在Visual j++ 或Visual j# 中使用它。
你的问题有两种解决方法。
- 使用Java <<li>
使用。净 API。下面是你需要的 c# 代码片段:
现在,同样的代码翻译成 j# :using System; /* ... */ const double d = 3.333333d; Console.WriteLine(String.Format("{0:F2}", d)); Console.WriteLine(String.Format("{0:0.00}", d)); Console.WriteLine(String.Format("{0:0.##}", d));
import System.Console; /* ... */ final double d = 3.333333d; Console.WriteLine(String.Format("Work done {0:F2}%", (System.Double) d)); Console.WriteLine(String.Format("{0:Work done 0.00}%", (System.Double) d)); Console.WriteLine(String.Format("{0:Work done #.##}%", (System.Double) d));
注意,您需要将
double
参数强制转换为System.Double
, 而不是java.lang.Double
,以便格式化工作(参见http://www.functionx.com/jsharp/Lesson04.htm)。
strong> 1.1 API(适用于任何Java , J + + 和 J # ):
import java.text.MessageFormat;
/* ... */
final double d = 3.333333d;
System.out.println(MessageFormat.format("{0,number,#.##}", new Object[] {new Double(d)}));
System.out.println(MessageFormat.format("{0,number,0.00}", new Object[] {new Double(d)}));
请注意,尽管两种格式都适用于给定的双精度类型,但0.00
和#.##
之间存在差异。