2010年1月24日星期日

[C#] 四捨五入

在C#便用Math.Round(),得出的結果並非慣常的四捨五入。

當進位時,若果是介於中間的數,給果會取決於捨位後的數值是基數還是偶數,系統會挑偶數作為捨位後的結果。例如2.5要捨位為整數,結果會是2,因為3是基數。

其實C#的Math.Round()有提供一個overload method可以該我們選擇使用甚麼方式捨位。
Math.Round(Double, MidpointRounding)

MidpointRounding是一個Enumeration,他包括了兩個members:
ToEven
AwayFromZero

ToEven就是原來這個捨位後的最接近的偶數。
AwayFromZero就是四捨五入了。

使用例子:
double naturalNumber = Math.Round( 1.2534, 1, MidpointRounding.AwayFromZero );
結果:

naturalNumber會是1.3

2010年1月14日星期四

用指令打包Java程式 - jar檔案製作

將Java程式打包成jar (Java Archive)


本篇文章基本上是用Sun提供的教學文件簡化再翻譯,仔細的原文可以這裡找到:http://java.sun.com/docs/books/tutorial/rmi/compiling.html


假設我們目錄下已有寫好的Java原碼。


目錄:
/net/antonyho/javaexample/


檔案:
An.java
Example.java


另外程式裡需用到其他library:
lib/neededLib.jar
 


執行指令 (Linux指令,各位在Windows下請改用相應的指令)
cd  /net/antonyho/
javac -cp javaexample/lib/neededLib.jar javaexample/javaexample/*.java


這時Java原始碼應該已編譯成.class檔案。
An.class
Example.class


再執行指令將他們包成jar
jar cvf anjarexample.jar javaexample/*.class javaexample/lib/neededLib.jar



完成後在目錄下會產生了jar檔和manifest檔 (/net/antonyho/javaexample/)
META-INF/MANIFEST.MF
anjarexampple.jar




執行這個jar檔輸入指令:
java -jar anjarexample.jar



改變執行這個jar時的進入點,假設執行jar時會執行javaexample.example:
jar cfe anjarexample.jar javaexample/Example.class