Что делают хэштеги в левой части десятичного числа в Java-классе DecimalFormat? - PullRequest
0 голосов
/ 31 октября 2018

Мое название этого вопроса у меня не так велико, но, надеюсь, я смогу объяснить это подробнее в этом посте.

import java.io.*;
import java.text.*;
public class Output {
public static void main(String[] args) {

    /*double number = 438.978;
    /*UpperCase <- naming convention for classes.DecimalFormat x = new DecimalFormat("#.#");
    System.out.println(x.format(number));*/

    double number = 43.97;
    DecimalFormat x = new DecimalFormat(".###");
    System.out.println(x.format(number));

  }
}

Не против комментариев. Во время моего курса Gr 11 Comp Sci я спросил своего учителя, делали ли что-нибудь хэштеги слева от десятичной точки ( 11-я строка ) с двойным числом, мы попробовали это как класс и обнаружили, что оно не изменять вывод System.out.println .

~/workspace/Java/ $ java Output
43.97

Может кто-нибудь объяснить мне назначение параметров слева от десятичной дроби? Кто-то запрограммировал это сделать что-то, поэтому мне было просто любопытно.

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Согласно DecimalFormat docs # используется для условного отображения цифры.

Symbol  Location    Localized?  Meaning
#       Number      Yes         Digit, zero shows as absent

Обратите внимание, что количество # используемых имеет значение:

DecimalFormat x = new DecimalFormat(".###");
System.out.println(x.format(43.9711111)); // 43.971
0 голосов
/ 31 октября 2018

Как и другие говорили, # форматирует цифру, но сбрасывает нули.

В вашем примере, где вы применяете .### к двойному значению, как 12.34, оно будет форматировать до 12.340, но, поскольку оно сбрасывает нули, это не так.

То же самое происходит, когда вы ставите # перед десятичной дробью, например ###.### для форматирования 12.34 будет отображать 012.340, но так как он сбрасывает нули, он отображается как 12.34.

Таким образом, за # до десятичная дробь действительно ничего не сделает.

Пример чего-то полезного перед десятичной дробью, так что вы можете увидеть форматы до десятичной дроби может работать с 0, который форматирует цифру, но не не отбрасывать нули, а также может быть использован в десятичном формате. Шаблон как 000.000, примененный к 12.34, приводит к 012.340:

double d = 12.34;
DecimalFormat df = new DecimalFormat("000.000");
System.out.print(df.format(d));

Шаблоны типа 0, # и более определены в DecimalFormat .

0 голосов
/ 31 октября 2018

# форматирует цифру, но сбрасывает нули. Поскольку ваш номер имеет две цифры после десятичной точки, третий символ формата игнорируется. Если бы у вас было число с четырьмя цифрами после десятичной точки, они были бы уменьшены до трех значащих цифр.

...