Разница заключается в том, что Например, выражение функции: 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
не действует, и в этом случае он просто вызывает ошибку.
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(35634646));
Output: 35,634,646
int value = 35634646;
DecimalFormat myFormatter = new DecimalFormat("#,###");
String output = myFormatter.format(value);
System.out.println(output);
OUTPUT : 35,634,646
#,###
, если вы хотите форматирование в европейском стиле, вы можете использовать #,##,###
.
– Ali
15 August 2011 в 21:25
,
.
– 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
Сначала вам нужно включить теги JSTL: -
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
в начале страницы
int bigNumber = 1234567;
String formattedNumber = String.format("%,d", bigNumber);
double value = 21403.3144d;
String.format("%,.2f", value);
21,403.31
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>
Используйте спецификатор формата %d
с запятой: %,d
Это, безусловно, самый простой способ.
Это решение сработало для меня:
NumberFormat.getNumberInstance(Locale.US).format(Integer.valueOf("String Your Number"));
Вы спрашиваете быстрее, но, может быть, вы имеете в виду «лучший» или «правильный» или «типичный»?
Вы также просите запятые указать тысячи, но, возможно, вы имеете в виду «в нормальной удобочитаемой форме в соответствии с местным обычаем вашего пользователя »?
Вы делаете это так:
int i = 35634646;
String s = NumberFormat.getIntegerInstance().format(i);
Американцы получат« 35,634,646 »
Немцы получат" 35.634.646 "
Швейцарские немцы получат« 35'634'646 »
вы не можете использовать
System.out.printf("%n%,d",int name);
. Запятая в printf
должна добавлять запятые в %d
inter.
Не положительно, но работает для меня.
import java.text.NumberFormat;
. – Mike S 11 May 2015 в 21:09,
, однако есть также области, использующие.
для группировки. Одним словом, жесткая кодировка локали считается плохой практикой. – Dreaming in Code 26 September 2017 в 21:42Locale.getCurrent()
является решением – Roger RV 28 December 2017 в 00:54