В принципе, добавьте это в pom.xml:
...
<repositories>
<repository>
<id>lib_id</id>
<url>file://${project.basedir}/lib</url>
</repository>
</repositories>
...
<dependencies>
...
<dependency>
<groupId>com.mylibrary</groupId>
<artifactId>mylibraryname</artifactId>
<version>1.0.0</version>
</dependency>
...
</dependencies>
Вы можете использовать toFixed () , чтобы сделать это
var twoPlacedFloat = parseFloat(yourString).toFixed(2)
Когда вы используете toFixed
, он всегда возвращает значение в виде строки. Это иногда усложняет код. Чтобы избежать этого, вы можете сделать альтернативный метод для Number.
Number.prototype.round = function(p) {
p = p || 10;
return parseFloat( this.toFixed(p) );
};
и используйте:
var n = 22 / 7; // 3.142857142857143
n.round(3); // 3.143
или просто:
(22/7).round(3); // 3.143
Если вам нужна производительность (как в играх):
Math.round(number * 100) / 100
Это примерно в 100 раз быстрее, чем parseFloat (number.toFixed (2))
Чтобы вернуть число, добавьте еще один слой скобок. Содержит это в чистоте.
var twoPlacedFloat = parseFloat((10.02745).toFixed(2));
простая строка JavaScript для плавания
var it_price = chief_double($("#ContentPlaceHolder1_txt_it_price").val());
function chief_double(num){
var n = parseFloat(num);
if (isNaN(n)) {
return "0";
}
else {
return parseFloat(num);
}
}
Solution for FormArray controllers
Инициализация FormArray Form Builder
formInitilize() {
this.Form = this._formBuilder.group({
formArray: this._formBuilder.array([this.createForm()])
});
}
Создание формы
createForm() {
return (this.Form = this._formBuilder.group({
convertodecimal: ['']
}));
}
Установка значений формы в контроллере форм
setFormvalues() {
this.Form.setControl('formArray', this._formBuilder.array([]));
const control = <FormArray>this.resourceBalanceForm.controls['formArray'];
this.ListArrayValues.forEach((x) => {
control.push(this.buildForm(x));
});
}
private buildForm(x): FormGroup {
const bindvalues= this._formBuilder.group({
convertodecimal: x.ArrayCollection1? parseFloat(x.ArrayCollection1[0].name).toFixed(2) : '' // Option for array collection
// convertodecimal: x.number.toFixed(2) --- option for two decimal value
});
return bindvalues;
}
У меня есть другое решение.
Вы можете использовать round()
, чтобы сделать это вместо toFixed()
var twoPlacedFloat = parseFloat(yourString).round(2)
Для чего это стоит: десятичное число - это десятичное число, вы либо округляете его до некоторого другого значения, либо нет. Внутренне он будет округлять десятичную дробь в соответствии с правилом вычисления и обработки с плавающей запятой. Внутри он остается десятичным числом (с плавающей запятой, в JS - двойным), независимо от того, сколько цифр вы хотите отобразить.
Чтобы представить его для отображения, вы можете выбрать точность отображения в соответствии с вашими предпочтениями путем преобразования строк. Презентация - это проблема отображения, а не хранения.
Если ваша цель состоит в том, чтобы проанализировать, и ваш ввод может быть литералом, то вы ожидаете, что float
и toFixed
не предоставят этого, поэтому вот две простые функции для обеспечения этого:
function parseFloat2Decimals(value) {
return parseFloat(parseFloat(value).toFixed(2));
}
function parseFloat2Decimals(value,decimalPlaces) {
return parseFloat(parseFloat(value).toFixed(decimalPlaces));
}
@sd Краткий ответ: В JS нет способа получить значение типа данных Number с конечными нулями после десятичной дроби.
Длинный ответ: Свойство функции JavaScript toFixed
или toPrecision
возвращать строку. Причина этого заключается в том, что тип данных Number не может иметь значение, подобное a = 2.00, он всегда удаляет завершающие нули после десятичного числа. Это встроенное свойство Number Datatype. Таким образом, для достижения вышеизложенного в JS у нас есть 2 варианта
Пожалуйста, используйте функцию ниже, если вы не хотите округлять.
function ConvertToDecimal(num) {
num = num.toString(); //If it's not already a String
num = num.slice(0, (num.indexOf(".")) + 3); //With 3 exposing the hundredths place
alert('M : ' + Number(num)); //If you need it back as a Number
}
Попробуйте это (см. Комментарии в коде):
function fixInteger(el) {
// this is element's value selector, you should use your own
value = $(el).val();
if (value == '') {
value = 0;
}
newValue = parseInt(value);
// if new value is Nan (when input is a string with no integers in it)
if (isNaN(newValue)) {
value = 0;
newValue = parseInt(value);
}
// apply new value to element
$(el).val(newValue);
}
function fixPrice(el) {
// this is element's value selector, you should use your own
value = $(el).val();
if (value == '') {
value = 0;
}
newValue = parseFloat(value.replace(',', '.')).toFixed(2);
// if new value is Nan (when input is a string with no integers in it)
if (isNaN(newValue)) {
value = 0;
newValue = parseFloat(value).toFixed(2);
}
// apply new value to element
$(el).val(newValue);
}
ceil from lodash, вероятно, лучший
_.ceil("315.9250488",2)
_.ceil(315.9250488,2)
_.ceil(undefined,2)
_.ceil(null,2)
_.ceil("",2)
будет работать также с числом, и это безопасно
Решение, которое работает для меня, заключается в следующем
parseFloat(value)