Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

104
Views
Redondee a dos decimales y obtenga números positivos

He colocado este código en GTM para capturar valores de la matriz de productos y actualmente se enfrentan dos problemas:

 var aa_ck_items = []; try{ var aa_ck_products = analytics_dataLayer.ecommerce.purchase.products || []; aa_ck_products.forEach(function(element) { var currentItem = { "unitPrice": Number(element.price) / Number(element.quantity) + Number(element.discount), "itemId": element.id, "quantity": Number(element.quantity), "discount": Number(element.discount), } aa_ck_items.push(currentItem); }); }catch(e){}

Problemas enfrentados

  1. Cuando se envía el valor de unitPrice , tiene muchos números después del decimal, por ejemplo , 12.23000002 y estoy buscando redondearlo a dos decimales. Conozco los dos métodos que podemos usar Math.round() y .toFixed(). No estoy seguro de cómo implementarlo en el código anterior.

  2. El valor del descuento a veces viene como un número negativo y siempre debe ser positivo. ¿Cómo puedo hacer eso?

¿Puede ayudarme alguien, por favor? ¡Gracias!

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

  1. Envuélvelo todo y usa .toFixed(2) como sugeriste~

  2. ¿Quieres convertir los números negativos en positivos o los números negativos en 0?

  • Si quiere hacerlos positivos, puede usar Math.abs()
  • Si desea que sea cero, puede implementar una función para hacerlo.

Dado tu código...

 aa_ck_products.forEach(function(element) { var currentItem = { "unitPrice": (Number(element.price) / Number(element.quantity) + Number(element.discount)).toFixed(2), "itemId": element.id, "quantity": Number(element.quantity), "discount": Math.abs(Number(element.discount)), // OR "discount": (Number(element.discount) > 0) ? Number(element.discount) : 0, } aa_ck_items.push(currentItem); });
about 4 years ago · Juan Pablo Isaza Report

0

Para 1. No estoy seguro de cómo implementarlo en el código anterior <--- simplemente encierre el cálculo dentro de ( & ) y agregue el sufijo .toFixed(2) (si necesita corregir 2 dígitos después del decimal, por ejemplo).

Para 2. ¿Cómo hago eso? <--- Matemáticas.abs()

Los dos elementos anteriores se muestran (con comentarios) en el siguiente ejemplo de código.

 let aa_ck_items = []; try { const aa_ck_products = analytics_dataLayer.ecommerce.purchase.products || []; aa_ck_products.forEach(function(element) { const currentItem = { "unitPrice": ( Number(element.price) / Number(element.quantity) + Number(element.discount) ).toFixed(2), // <<--- #1 from question, assuming 2 digits after decimal for .toFixed() "itemId": element.id, "quantity": Number(element.quantity), "discount": Math.abs( // <<--- #2 from question, using Math.abs() Number(element.discount) ) } aa_ck_items.push(currentItem); }); } catch (e) {}

NOTA : el uso de var se ha modificado para let o const según corresponda.

A continuación se muestra cómo probablemente escribiría este código:

 let aa_ck_items = []; try { const aa_ck_products = analytics_dataLayer.ecommerce.purchase.products || []; aa_ck_items = aa_ck_products.map( ({price, quantity, discount, id}) => ({ "unitPrice": ( Number(price) / Number(quantity) + Number(discount) ).toFixed(2), "itemId": id, "quantity": Number(quantity), "discount": Math.abs(Number(discount)) }) ); } catch (e) {}

Gracias James por la sugerencia en los comentarios.

about 4 years ago · Juan Pablo Isaza Report

0

//to approximate a decimal number using fixed-point notation let number = 123.456; number.toFixed(2); //expected as: 123.45 //to get the module (positive side) of a number let negative_number = -10; Math.abs(negative_number); //expected as: 10
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!