在j#中将小数点后的双位数格式化为2位

  • 本文关键字:格式化 2位 小数点 j#
  • 更新时间 :
  • 英文 :


如何将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>

    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#.##之间存在差异。

  1. 使用。净 API。下面是你需要的 c# 代码片段:

    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));
    
    现在,同样的代码翻译成 j# :
    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)。

最新更新