преобразование массива в строку в javascript при контроле точности чисел с плавающей точкой - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть массив чисел-тройок javascript вида

[[123.55555,4.44444444,0.123455666],[12344.44444,7.77777777,8.8888101010],...,[1.000102340240,123.02020400,1.121212121212]]

Это хорошо конвертируется в строку с помощью метода toString (). (Правка: на самом деле двумерная природа массива теряется функцией toString (), но меня это не беспокоит, потому что в каждой строке 3 номера, поэтому структура по-прежнему неявна в строке.)

Однако, что если я захочу укоротить / округлить (мне все равно, какие) числа в 2 или 3 десятичных разрядах? Кажется, что toFixed () не работает для массивов ...

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

Ответы [ 3 ]

0 голосов
/ 27 апреля 2018

var array=[[123.55555,4.44444444,0.123455666],[12344.44444,7.77777777,8.8888101010]];
array=array.map(function(item){
  return item.map(function(num){
    return parseFloat(num.toFixed(2));
  });
});
console.log(array.toString());
0 голосов
/ 27 апреля 2018

Вы можете сделать:

const array = [[123.55555, 4.44444444, 0.123455666], [12344.44444, 7.77777777, 8.8888101010]];
const result = [].concat.apply([], array).map(n => n.toFixed(2)).toString();

console.log(result);
0 голосов
/ 27 апреля 2018

Как прокомментировано; Вы можете использовать карту:

console.log(
  [[123.55555,4.44444444,0.123455666],[12344.44444,7.77777777,8.8888101010],[1.000102340240,123.02020400,1.121212121212]]
  .map(numbers=>numbers.map(number=>number.toFixed(3)))
  .toString()
)
...