Как красиво отформатировать плавающие числа в строку без лишних десятичных 0?

Изменение бита Litle кода alcuadrado - glob не видят файлы с именем из таких точек, как .htaccess, поэтому я использую scandir и сам скрипт удаляет себя - проверьте __FILE__.

function deleteDir($dirPath) {
    if (!is_dir($dirPath)) {
        throw new InvalidArgumentException("$dirPath must be a directory");
    }
    if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') {
        $dirPath .= '/';
    }
    $files = scandir($dirPath); 
    foreach ($files as $file) {
        if ($file === '.' || $file === '..') continue;
        if (is_dir($dirPath.$file)) {
            deleteDir($dirPath.$file);
        } else {
            if ($dirPath.$file !== __FILE__) {
                unlink($dirPath.$file);
            }
        }
    }
    rmdir($dirPath);
}
457
задан 18446744073709551615 13 March 2015 в 10:42
поделиться

4 ответа

Naw, не имеет значения.

Потеря производительности из-за Обработки строк является нулем.

И вот код для обрезки конца после %f

private static String trimTrailingZeros(String number) {
    if(!number.contains(".")) {
        return number;
    }

    return number.replaceAll("\\.?0*$", "");
}
12
ответ дан 22 November 2019 в 22:51
поделиться

цена Формата с группировкой, округление, нет ненужный обнуляет (в двойном).

Правила:

  1. No обнуляет в конце (2.0000 = 2; 1.0100000 = 1.01)
  2. Два максимума цифр после точки (2.010 = 2.01; 0.20 = 0.2)
  3. Округление после 2-й цифры после точки (1.994 = 1.99; 1.995 = 2; 1.006 = 1.01; 0.0006 -> 0)
  4. , Возвраты 0 (null/-0 = 0)
  5. Добавляют $ (= $56/-$56)
  6. Группировка (101101.02 = $101,101.02)
[еще 1125] примеры:

-99.985 = -$99.99

10 = $10

10.00 = $10

20.01000089 = $20.01

Записанный в Kotlin как забавное расширение Двойных (причина, используемая в Android), но, может быть преобразован в Java легко, причина, классы Java использовались.

/**
 * 23.0 -> $23
 *
 * 23.1 -> $23.1
 *
 * 23.01 -> $23.01
 *
 * 23.99 -> $23.99
 *
 * 23.999 -> $24
 *
 * -0.0 -> [110]
 *
 * -5.00 -> -$5
 *
 * -5.019 -> -$5.02
 */
fun Double?.formatUserAsSum(): String {
    return when {
        this == null || this == 0.0 -> "[110]"
        this % 1 == 0.0 -> DecimalFormat("$#,##0;-$#,##0").format(this)
        else -> DecimalFormat("$#,##0.##;-$#,##0.##").format(this)
    }
}

, Как использовать:

var yourDouble: Double? = -20.00
println(yourDouble.formatUserAsSum()) // will print -$20

yourDouble = null
println(yourDouble.formatUserAsSum()) // will print [111]

О DecimalFormat: https://docs.oracle.com/javase/6/docs/api/java/text/DecimalFormat.html

0
ответ дан 22 November 2019 в 22:51
поделиться

Это могло бы быть очевидно, но иногда примечание будет полезно. Можно использовать println, если Вы не хотите изменять количество плавающих цифр:

System.out.println("YOUR STRING" + YOUR_DOUBLE_VARIABLE);
0
ответ дан 22 November 2019 в 22:51
поделиться
String.format("%.2f", value) ;
228
ответ дан 22 November 2019 в 22:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: