Hi,

format() is a  class method, not an instance method. However, the following does not work either:

--> String.format("%6.2f", -3.1415926)

Undefined operation for the given operands.
check or define function %eo_e for overloading.


S.
Le 04/05/2021 à 15:44, Samuel Gougeon a écrit :

Dear all,

May be the question is only about Java, or may be about how Scilab implements it.

In order to do some tests to fix the regression brought by Scilab 6 and reported as the major bug 16376 <https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/bugzilla.scilab.org/16376> about how datatips display (big or) small values (all displayed as 0 instead of using an exponential notation), i am trying to use the java.lang.String <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/docs.oracle.com/javase/7/docs/api/java/lang/String.html> class and its .format() method <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/docs.oracle.com/javase/7/docs/api/java/lang/String.html#format(java.lang.String,%20java.lang.Object...)>, in Scilab language.

Indeed, the java.text.DecimalFormat class used for datatips has no /self-adaptative format similar to the "%g" printf one/ (that automatically chooses the normal or exponential numerical notation according to the magnitude of the absolute value to display), while the String class provides this .format() method, with all printf formatting conventions <https://antispam.utc.fr/proxy/2/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax>, including the "%g" one.

Now, even about only the Java side, something is unclear to me:
The official documentation of the String class presents .format() as a String method, not as a String constructor. If so, then .format should be applied to a predefined String. But which one? What is done with it? It could be the String format, but this one is provided as an explicit input of the method...

--> jimport java.lang.String
--> s = String.new()
 s  =

--> s.length()   // OK, this works
 ans  =
  0

--> s.format("%6.2f", -3.1415926)
Undefined operation for the given operands.
check or define function %eo_e for overloading.

--> s = String.new("%6.1f")
 s  =
%6.1f

--> s.format(-3.1415926)
Undefined operation for the given operands.
check or define function %eo_e for overloading.

Yet, the .format method is actually listed among all String's methods:
--> or(jgetmethods(String)=="format")
 ans  =
  T

Using the java.text.DecimalFormat class to fix the bug will anyway be possible, with explicit conditions on the magnitude of the value to display. But i would like to understand this error about String.format().

Any hint is welcome.

Regards
Samuel


_______________________________________________
users mailing list
users@lists.scilab.org
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users

--
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet

_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

Reply via email to