2016-08-23 122 views
1

如何將中的double值格式化爲小數點後兩位數字(不進行算術運算)?在J中的小數點後格式化兩位數字到兩位數字

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

+0

也許'的String =的String.Format( 「\ rWork完成:{0:D2}%」,X));'如C# –

+0

@Bob_我將試試看。不知道這也適用於'C#'。我主要使用'String s = String.format(「\ rWork done {0:0.00}%」,x)'; – Matthias

+0

@Bob__不起作用。 – Matthias

回答

1

String.format() API是在Java中引入的1.5,所以re沒有機會可以使用它Visual J ++Visual J#

有兩種方法可以解決您的問題。

  1. 使用Java 1.1 API(與任何的JavaJ ++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)})); 
    

    注意的是,儘管這兩種格式對於給定的雙A合作, 0.00#.##之間有區別。

  2. 使用.NET 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)。

相關問題