строковый формат номера [дубликат]

Разница заключается в том, что functionOne является выражением функции и поэтому определяется только при достижении этой строки, тогда как functionTwo является объявлением функции и определяется, как только выполняется его окружающая функция или скрипт (из-за грузоподъемный [/ д0]).

Например, выражение функции:

// TypeError: functionOne is not a function
functionOne();

var functionOne = function() {
  console.log("Hello!");
};

И объявление функции:

// Outputs: "Hello!"
functionTwo();

function functionTwo() {
  console.log("Hello!");
}

Это также означает, что вы не можете условно определять функции с помощью объявлений функций:

if (test) {
   // Error or misbehavior
   function functionThree() { doSomething(); }
}

Вышеупомянутое фактически определяет functionThree независимо значения test; если use strict не действует, и в этом случае он просто вызывает ошибку.

149
задан Vulcan 2 June 2013 в 08:07
поделиться

11 ответов

System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
235
ответ дан Eng.Fouad 20 August 2018 в 20:19
поделиться
  • 1
    Мне пришлось добавить import java.text.NumberFormat;. – Mike S 11 May 2015 в 21:09
  • 2
    Это приводит к группировке в стиле США, которая всегда использует ,, однако есть также области, использующие . для группировки. Одним словом, жесткая кодировка локали считается плохой практикой. – Dreaming in Code 26 September 2017 в 21:42
  • 3
    @DreaminginCode Для этого хорошо Locale.getCurrent() является решением – Roger RV 28 December 2017 в 00:54
 int value = 35634646;
 DecimalFormat myFormatter = new DecimalFormat("#,###");
 String output = myFormatter.format(value);
 System.out.println(output);

OUTPUT : 35,634,646

20
ответ дан Bala R 20 August 2018 в 20:19
поделиться
  • 1
    Ваш шаблон не должен быть больше #,###, если вы хотите форматирование в европейском стиле, вы можете использовать #,##,###. – Ali 15 August 2011 в 21:25
  • 2
    @Ali: Формат, который вы описываете, используется только в Индии, и я, по крайней мере, на 90% уверен, что Индия не в Европе. – Cairnarvon 2 June 2013 в 08:34
  • 3
    Я понимаю ... отлично, если вам нужно форматирование в формате indian, тогда вы это сделаете. – Ali 14 June 2013 в 04:42
  • 4
    Это зависит от языка и не будет выдавать правильный (как вопрос) вывод, если он запущен, где локаль по умолчанию не разделяет тысячи с помощью ,. – antak 22 April 2016 в 01:38

Другие ответы правильные, однако дважды проверьте свой язык перед использованием "%,d":

Locale.setDefault(Locale.US);
int bigNumber = 35634646;
String formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);

Locale.setDefault(new Locale("pl", "PL"));
formattedNumber = String.format("%,d", bigNumber);
System.out.println(formattedNumber);

Результат:

35,634,646
35 634 646
15
ответ дан Grzegorz Szpetkowski 20 August 2018 в 20:19
поделиться

Сначала вам нужно включить теги JSTL: -

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 

в начале страницы

-8
ответ дан Jean-François Corbett 20 August 2018 в 20:19
поделиться
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
71
ответ дан mopsled 20 August 2018 в 20:19
поделиться
double value = 21403.3144d;
String.format("%,.2f", value);

Выход

21,403.31
21
ответ дан Mr. Polywhirl 20 August 2018 в 20:19
поделиться
  • 1
    Преимущество: нет «нового», не загружает сборщик мусора (в отличие от DecimalFormat). – Contango 15 September 2017 в 10:27
  • 2
    Посмотрите в String.format. Он начинается с return new Formatter(l) ... и т. Д. Поэтому аргумент сборщика мусора не так силен, как кажется. – Scheintod 25 September 2017 в 19:59

Если то же самое должно быть сделано в JSP, используйте:

<fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
<c:out value="${formattedVariable}"></c:out>

для использования несколькими значениями:

<c:forEach items="${yourlist}" var="yourlist">

    <fmt:formatNumber pattern="#,##0" value="${yourlist.yourintvalue}" var="formattedVariable" />
    <c:out value="${formattedVariable}"></c:out>
</c:forEach>
1
ответ дан Navankur Chauhan 20 August 2018 в 20:19
поделиться

Используйте спецификатор формата %d с запятой: %,d

Это, безусловно, самый простой способ.

1
ответ дан perror 20 August 2018 в 20:19
поделиться

Это решение сработало для меня:

NumberFormat.getNumberInstance(Locale.US).format(Integer.valueOf("String Your Number"));
2
ответ дан R. Zagórski 20 August 2018 в 20:19
поделиться

Вы спрашиваете быстрее, но, может быть, вы имеете в виду «лучший» или «правильный» или «типичный»?

Вы также просите запятые указать тысячи, но, возможно, вы имеете в виду «в нормальной удобочитаемой форме в соответствии с местным обычаем вашего пользователя »?

Вы делаете это так:

    int i = 35634646;
    String s = NumberFormat.getIntegerInstance().format(i);

Американцы получат« 35,634,646 »

Немцы получат" 35.634.646 "

Швейцарские немцы получат« 35'634'646 »

132
ответ дан Steve McLeod 20 August 2018 в 20:19
поделиться

вы не можете использовать

System.out.printf("%n%,d",int name);

. Запятая в printf должна добавлять запятые в %d inter.

Не положительно, но работает для меня.

-1
ответ дан YoungHobbit 20 August 2018 в 20:19
поделиться
Другие вопросы по тегам:

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