| 3211 | } |
| 3212 | |
| 3213 | static int getDigits2(double n, double resolution, int maxDigits, int suggestedDigits) { |
| 3214 | if (Double.isNaN(n) || Double.isInfinite(n)) |
| 3215 | return 0; //no scientific notation |
| 3216 | int log10ofN = (int)Math.floor(Math.log10(Math.abs(n))+1e-7); |
| 3217 | int digits = resolution != 0 ? |
| 3218 | -(int)Math.floor(Math.log10(Math.abs(resolution))+1e-7) : |
| 3219 | Math.max(0, -log10ofN+maxDigits-2); |
| 3220 | int sciDigits = -Math.max((log10ofN+digits),1); |
| 3221 | //IJ.log("n="+(float)n+"digitsRaw="+digits+" log10ofN="+log10ofN+" sciDigits="+sciDigits); |
| 3222 | if ((digits < -2 && log10ofN >= maxDigits) || suggestedDigits < 0) |
| 3223 | digits = sciDigits; //scientific notation for large numbers or if desired via suggestedDigits (plot.setOptions) |
| 3224 | else if (digits < 0) |
| 3225 | digits = 0; |
| 3226 | else if (digits > maxDigits-1 && log10ofN < -2) |
| 3227 | digits = sciDigits; // scientific notation for small numbers |
| 3228 | return digits < 0 ? Math.min(sciDigits, suggestedDigits) : Math.max(digits, suggestedDigits); |
| 3229 | } |
| 3230 | |
| 3231 | static boolean isInteger(double n) { |
| 3232 | return n==Math.round(n); |