|
From: <bma...@us...> - 2011-12-20 15:23:05
|
Revision: 6871
http://fudaa.svn.sourceforge.net/fudaa/?rev=6871&view=rev
Author: bmarchan
Date: 2011-12-20 15:22:54 +0000 (Tue, 20 Dec 2011)
Log Message:
-----------
Fix : CtuluNumberFormatFortran tient compte d'un nombre max de decimales apr?\195?\168s la virgule
Modified Paths:
--------------
trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/CtuluNumberFormatFortran.java
trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/fileformat/FortranLib.java
Modified: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/CtuluNumberFormatFortran.java
===================================================================
--- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/CtuluNumberFormatFortran.java 2011-12-20 15:20:56 UTC (rev 6870)
+++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/CtuluNumberFormatFortran.java 2011-12-20 15:22:54 UTC (rev 6871)
@@ -7,6 +7,8 @@
*/
package org.fudaa.ctulu;
+import java.text.DecimalFormat;
+
import com.ostermiller.util.SignificantFigures;
/**
@@ -65,14 +67,32 @@
public static final String WRONG_VALUE = "X";
final int maxChar_;
+ /** Le pr\xE9formatteur pour le nombre maxi de d\xE9cimales apr\xE8s la virgule. <tt>null</tt> si pas de limitation */
+ final DecimalFormat fractionFmt_;
+
/**
* @param _maxChar
*/
public CtuluNumberFormatFortran(final int _maxChar) {
super();
maxChar_ = _maxChar;
+ fractionFmt_=null;
}
+
+ /**
+ * Un formatteur tenant compte du nombre de digits de fractions.
+ * @param _maxChar Le nombre maxi de caract\xE8res du champ de codage
+ * @param _maxFractionDigits Le nombre max de digits. Ce nombre max n'est pas
+ * consid\xE9r\xE9 si le nombre est \xE9crit en notation scientifique.
+ */
+ public CtuluNumberFormatFortran(final int _maxChar, final int _maxFractionDigits) {
+ super();
+ maxChar_=_maxChar;
+
+ fractionFmt_=CtuluLib.getNoEffectDecimalFormat();
+ fractionFmt_.setMaximumFractionDigits(_maxFractionDigits);
+ }
public CtuluNumberFormatI getCopy() {
return this;
@@ -91,7 +111,16 @@
}
public String format(final double _d) {
- String s = Double.toString(_d);
+ String s;
+
+ // Pr\xE9formatage pour tenir compte du nombre maxi de digits fraction.
+ if (fractionFmt_!=null) {
+ s = fractionFmt_.format(_d);
+ }
+ else {
+ s = Double.toString(_d);
+ }
+
// on ajoute un point et on enleve le 0 inutile
final boolean isExp = isExp(s);
if (!isExp) {
Modified: trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/fileformat/FortranLib.java
===================================================================
--- trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/fileformat/FortranLib.java 2011-12-20 15:20:56 UTC (rev 6870)
+++ trunk/framework/ctulu-common/src/main/java/org/fudaa/ctulu/fileformat/FortranLib.java 2011-12-20 15:22:54 UTC (rev 6871)
@@ -123,11 +123,29 @@
}
public static CtuluNumberFormater getFormater(final int _nbChar, final int _maxFractionDigits, final boolean _isPos) {
- final CtuluNumberFormatFortran fmt = getFortranFormat(_nbChar, _maxFractionDigits);
+ final CtuluNumberFormatFortran fmt = getFortranFormat(_nbChar);
return new CtuluNumberFormater(fmt, fmt.createValueValidator(_isPos));
}
/**
+ * @deprecated Use {@link #getFortranFormat(int)} or {@link #getImprovedFortranFormat(int, int)} instead
+ */
+ public static CtuluNumberFormatFortran getFortranFormat(final int _nbCharTotal, final int _nbFractionDigits) {
+ return new CtuluNumberFormatFortran(_nbCharTotal);
+ }
+
+ /**
+ * permet de creer un format pour les double POSITIFS pour les champ "FX". X represente le nombre total de caractere
+ * du champ.
+ *
+ * @param _nbCharTotal le 'X' : nombre total de car.
+ * @return le formatter adapte
+ */
+ public static CtuluNumberFormatFortran getFortranFormat(final int _nbCharTotal) {
+ return new CtuluNumberFormatFortran(_nbCharTotal);
+ }
+
+ /**
* permet de creer un format pour les double POSITIFS pour les champ "FX.Y". X represente le nombre total de caractere
* du champ. Y represente le nombre de chiffre apres la virgule
*
@@ -135,8 +153,8 @@
* @param _nbFractionDigits le 'Y' nombre de chiffre apres la virgule
* @return le formatter adapte
*/
- public static CtuluNumberFormatFortran getFortranFormat(final int _nbCharTotal, final int _nbFractionDigits) {
- return new CtuluNumberFormatFortran(_nbCharTotal);
+ public static CtuluNumberFormatFortran getImprovedFortranFormat(final int _nbCharTotal, final int _nbFractionDigits) {
+ return new CtuluNumberFormatFortran(_nbCharTotal,_nbFractionDigits);
}
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|