Заставьте плавание только показать два десятичных разряда

Есть несколько способов приблизиться к этому, однако один из вариантов будет основывать это на методе Array#reduce() следующим образом:

const jsonData1=[{firstName:"Sam",age:"10"},{firstName:"John",age:"11"},{firstName:"Jack",age:"12"},{firstName:"Pam",age:"13"},{firstName:"Tom",age:"14"},{firstName:"Mitch",age:"15"}];
const jsonData2=[{firstName:"Sam",city:"London"},{firstName:"John",city:"New York"},{firstName:"Jack",city:"Paris"},{firstName:"Pam",city:"Moscow"},{firstName:"Roger",city:"Shanghai"},{firstName:"Don",city:"Jakarta"}];


/* 
Use Array#concat() to combine both input arrays before performing
the merge. This will ensure that all items in both arrays are
processed and accounted for during the merge (which is important in
situations where the input arrays differ in length).

Object.values() is used to transform the dictionary resulting from
reduce() to an array
*/
var result = Object.values(
[].concat(jsonData1, jsonData2
).reduce((dict, item) => {

  /* 
  We use Array#reduce is an intermediate step to construct a dictionary
  which maps each unique "item.firstName" to a corresponding object 
  that contains the merged (or yet to be merged) data for this first 
  name
  */
   
  var value = dict[item.firstName] || {}

  /*
  Use Object.assign() to merge existing data for "item.firstName" with
  current item being processed. Also pass default values as first
  argument to ensure all three key values are present in merge result
  */
  value = Object.assign({ firstName : '', age : '', city : ''} , value, item)

  /*
  Update the dictionary with merged data
  */
  dict[item.firstName] = value

  return dict

}, {}))

console.log(result);
[112 ]

294
задан mskfisher 9 May 2012 в 08:29
поделиться

4 ответа

Это не вопрос того, как число хранится, это - вопрос того, как Вы отображаете его. При преобразовании его в строку Вы должны вокруг к желаемой точности, которая в Вашем случае является двумя десятичными разрядами.

, Например:

NSString* formattedNumber = [NSString stringWithFormat:@"%.02f", myFloat];

%.02f говорит средству форматирования, что Вы будете форматировать плавание (%f) и, который должен быть округлен к двум местам и должен быть дополнен 0 с.

, Например:

%f = 25.000000
%.f = 25
%.02f = 25.00
645
ответ дан Marcus Rossel 23 November 2019 в 01:36
поделиться

В цели-c, если Вы имеете дело с регулярными массивами символов (вместо указателей на NSString) Вы могли бы также использовать:

printf("%.02f", your_float_var);

OTOH, если то, что Вы хотите, должно сохранить то значение на массиве символов, Вы могли использовать:

sprintf(your_char_ptr, "%.02f", your_float_var);
3
ответ дан Pablo Santa Cruz 23 November 2019 в 01:36
поделиться

в объекте -c вы хотите вывести значение float в виде 2 десятичных чисел, тогда передайте аргумент, указывающий, сколько десятичных точек вы хотите вывести. например, 0.02f выведет 25.00 0.002f выведет 25.000

1
ответ дан 23 November 2019 в 01:36
поделиться

Вы также можете попробовать использовать NSNumberFormatter:

NSNumberFormatter* nf = [[[NSNumberFormatter alloc] init] autorelease];
nf.positiveFormat = @"0.##";
NSString* s = [nf stringFromNumber: [NSNumber numberWithFloat: myFloat]];

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

20
ответ дан 23 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

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