Как настроить вывод операторов в jQuery на тысячи разделителей и 2 десятичных знака?

Как уже упоминалось, вы должны потреблять stderr и stdout .

По сравнению с другими ответами, поскольку Java 1.7 еще проще , Вам больше не нужно создавать темы, чтобы читать stderr и stdout .

Просто используйте ProcessBuilder и используйте методы redirectOutput в комбинации с redirectError или redirectErrorStream .

String directory = "/working/dir";
File out = new File(...); // File to write stdout to
File err = new File(...); // File to write stderr to
ProcessBuilder builder = new ProcessBuilder();
builder.directory(new File(directory));
builder.command(command);
builder.redirectOutput(out); // Redirect stdout to file
if(out == err) { 
  builder.redirectErrorStream(true); // Combine stderr into stdout
} else { 
  builder.redirectError(err); // Redirect stderr to file
}
Process process = builder.start();

0
задан Rozaimi 17 January 2019 в 03:23
поделиться

1 ответ

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

//For example           Result
parseFloat("5,4,3")     // 5
parseFloat("15,000")    // 15
parseFloat("123,456")   // 123

Это можно сделать с помощью простой замены: .replace(/,/g,'');


Я также внес несколько изменений, чтобы привести в порядок:

    [ 1119] Сделал функцию, которая выполняет и replace, и parseFloat, называемые parseCurrency, чтобы сделать ее легко пригодной для повторного использования
  • Поместите ваше форматирование в функцию, называемую formatCurrency, чтобы сделать ее легко многократно используемой
  • Сделанные dec_balance и nov_balance входы могут совместно использовать событие, поскольку изменение любого из них должно привести к пересчету net

const formatCurrency = (str) => (""+str).replace(/[^\d.]/g, "").replace(/^(\d*\.)(.*)\.(.*)$/, '$1$2$3').replace(/\.(\d{2})\d+/, '.$1').replace(/\B(?=(\d{3})+(?!\d))/g, ",");
const parseCurrency = (str) => str.replace(/,/g,'');

$('input.inputdecimals').keyup(function(event) {
  if (event.which >= 37 && event.which <= 40) return;
  $(this).val((i,v) => formatCurrency(v));
});

$("#txt_balance_dec, #txt_balance_nov").keyup(function() {
  var bal_dec = parseCurrency( $("#txt_balance_dec").val() );
  var bal_nov = parseCurrency( $("#txt_balance_nov").val() );
  var result = bal_dec - bal_nov;
  $('#txt_nett_dec').val(formatCurrency(result));
});
input { display: block; margin: 10px 0;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
Dec <input type="text" class="inputdecimals" id="txt_balance_dec" name="txt_balance_dec" value="0.00">
Nov <input type="text" class="inputdecimals" id="txt_balance_nov" name="txt_balance_nov" value="0.00">
Net <input type="text" class="inputdecimals" id="txt_nett_dec" name="txt_nett_dec" value="0.00" readonly>
[1128]

( Стоит также отметить, что ваша функция форматирования выглядит раздетой -, поэтому net будет абсолютным значением. ) [ 1126]

0
ответ дан Tyler Roper 17 January 2019 в 03:23
поделиться
Другие вопросы по тегам:

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