Javascript: string to Float

Javascript: string to Float

本文关键字:Float to string Javascript      更新时间:2023-09-26

我有一个对象数组。对象有"浇注,出售,损失和方差"属性作为字符串。我想把字符串转换成浮点数。我需要保留逗号分隔符和双点精度。下面是对象数组的示例。

[{"ID":"September-2016", "Product":"September-2016", "Poured":"111,759.07", "Sold":"107,660.97", "Loss":"-4,098.10", "Variance":"-3.67", "startDate":"2016-09-01", "endDate":"2016-09-22"}, {"ID":"November-2015", "Product":"November-2015", "Poured":"53,690.25", "Sold":"52,953.60", "Loss":"-736.65", "Variance":"-1.37", "startDate":"2015-11-20", "endDate":"2015-11-30"}, {"ID":"May-2016", "Product":"May-2016", "Poured":"156,401.65", "Sold":"151,192.51", "Loss":"-5,209.14", "Variance":"-3.33", "startDate":"2016-05-03", "endDate":"2016-05-31"}, {"ID":"March-2016", "Product":"March-2016", "Poured":"49,260.22", "Sold":"49,399.14", "Loss":"138.92", "Variance":"0.28", "startDate":"2016-03-01", "endDate":"2016-03-09"}, {"ID":"June-2016", "Product":"June-2016", "Poured":"162,126.88", "Sold":"161,718.62", "Loss":"-408.26", "Variance":"-0.25", "startDate":"2016-06-01", "endDate":"2016-06-30"}, {"ID":"July-2016", "Product":"July-2016", "Poured":"160,185.68", "Sold":"154,882.40", "Loss":"-5,303.28", "Variance":"-3.31", "startDate":"2016-07-01", "endDate":"2016-07-31"}, {"ID":"January-2016", "Product":"January-2016", "Poured":"355,509.26", "Sold":"179,696.72", "Loss":"-175,812.54", "Variance":"-49.45", "startDate":"2016-01-01", "endDate":"2016-01-31"}, {"ID":"February-2016", "Product":"February-2016", "Poured":"150,980.73", "Sold":"146,248.72", "Loss":"-4,732.01", "Variance":"-3.13", "startDate":"2016-02-01", "endDate":"2016-02-29"}, {"ID":"December-2015", "Product":"December-2015", "Poured":"167,843.42", "Sold":"163,732.95", "Loss":"-4,110.47", "Variance":"-2.45", "startDate":"2015-12-01", "endDate":"2015-12-31"}, {"ID":"August-2016", "Product":"August-2016", "Poured":"168,853.51", "Sold":"160,024.84", "Loss":"-8,828.67", "Variance":"-5.23", "startDate":"2016-08-01", "endDate":"2016-08-31"}]

I need like

[{"ID":"September-2016", "Product":"September-2016", "Poured":111,759.07, "Sold":107,660.97, "Loss":-4,098.10, "Variance":-3.67, "startDate":"2016-09-01", "endDate":"2016-09-22"}, {"ID":"November-2015", "Product":"November-2015", "Poured":53,690.25, "Sold":52,953.60, "Loss":-736.65, "Variance":-1.37, "startDate":"2015-11-20", "endDate":"2015-11-30"}, {"ID":"May-2016", "Product":"May-2016", "Poured":156,401.65, "Sold":151,192.51, "Loss":-5,209.14, "Variance":-3.33, "startDate":"2016-05-03", "endDate":"2016-05-31"}, {"ID":"March-2016", "Product":"March-2016", "Poured":49,260.22, "Sold":49,399.14, "Loss":138.92, "Variance":0.28, "startDate":"2016-03-01", "endDate":"2016-03-09"}, {"ID":"June-2016", "Product":"June-2016", "Poured":162,126.88, "Sold":161,718.62, "Loss":-408.26, "Variance":-0.25, "startDate":"2016-06-01", "endDate":"2016-06-30"}, {"ID":"July-2016", "Product":"July-2016", "Poured":160,185.68, "Sold":154,882.40, "Loss":-5,303.28, "Variance":-3.31, "startDate":"2016-07-01", "endDate":"2016-07-31"}, {"ID":"January-2016", "Product":"January-2016", "Poured":355,509.26, "Sold":179,696.72, "Loss":-175,812.54, "Variance":-49.45, "startDate":"2016-01-01", "endDate":"2016-01-31"}, {"ID":"February-2016", "Product":"February-2016", "Poured":150,980.73, "Sold":146,248.72, "Loss":-4,732.01, "Variance":-3.13, "startDate":"2016-02-01", "endDate":"2016-02-29"}, {"ID":"December-2015", "Product":"December-2015", "Poured":167,843.42, "Sold":163,732.95, "Loss":-4,110.47, "Variance":-2.45, "startDate":2015-12-01, "endDate":"2015-12-31"}, {"ID":"August-2016", "Product":"August-2016", "Poured":168,853.51, "Sold":160,024.84, "Loss":-8,828.67, "Variance":-5.23, "startDate":"2016-08-01", "endDate":"2016-08-31"}]

请告诉我如何才能做到这一点。

对不起,我把它写成了"字符串到整数"最初应该是"字符串到浮点数"

既然你想要一个浮点数,那么我认为它需要是可编程的可用的,甚至不需要是人类可读的-因为你会得到的唯一方法是保持它作为一个字符串…

var data = [{"ID":"September-2016", "Product":"September-2016", "Poured":"111,759.07", "Sold":"107,660.97", "Loss":"-4,098.10", "Variance":"-3.67", "startDate":"2016-09-01", "endDate":"2016-09-22"}, {"ID":"November-2015", "Product":"November-2015", "Poured":"53,690.25", "Sold":"52,953.60", "Loss":"-736.65", "Variance":"-1.37", "startDate":"2015-11-20", "endDate":"2015-11-30"}, {"ID":"May-2016", "Product":"May-2016", "Poured":"156,401.65", "Sold":"151,192.51", "Loss":"-5,209.14", "Variance":"-3.33", "startDate":"2016-05-03", "endDate":"2016-05-31"}, {"ID":"March-2016", "Product":"March-2016", "Poured":"49,260.22", "Sold":"49,399.14", "Loss":"138.92", "Variance":"0.28", "startDate":"2016-03-01", "endDate":"2016-03-09"}, {"ID":"June-2016", "Product":"June-2016", "Poured":"162,126.88", "Sold":"161,718.62", "Loss":"-408.26", "Variance":"-0.25", "startDate":"2016-06-01", "endDate":"2016-06-30"}, {"ID":"July-2016", "Product":"July-2016", "Poured":"160,185.68", "Sold":"154,882.40", "Loss":"-5,303.28", "Variance":"-3.31", "startDate":"2016-07-01", "endDate":"2016-07-31"}, {"ID":"January-2016", "Product":"January-2016", "Poured":"355,509.26", "Sold":"179,696.72", "Loss":"-175,812.54", "Variance":"-49.45", "startDate":"2016-01-01", "endDate":"2016-01-31"}, {"ID":"February-2016", "Product":"February-2016", "Poured":"150,980.73", "Sold":"146,248.72", "Loss":"-4,732.01", "Variance":"-3.13", "startDate":"2016-02-01", "endDate":"2016-02-29"}, {"ID":"December-2015", "Product":"December-2015", "Poured":"167,843.42", "Sold":"163,732.95", "Loss":"-4,110.47", "Variance":"-2.45", "startDate":"2015-12-01", "endDate":"2015-12-31"}, {"ID":"August-2016", "Product":"August-2016", "Poured":"168,853.51", "Sold":"160,024.84", "Loss":"-8,828.67", "Variance":"-5.23", "startDate":"2016-08-01", "endDate":"2016-08-31"}]
data.forEach(function(item){
  item.Poured = parseFloat(item.Poured.replace(/,/g, ''))
  // item.Sold = parseFloat(item.Sold.replace(/,/g, ''))
  // item.Variance = parseFloat(item.Variance.replace(/,/g, ''))
})
console.log(data)

您可以使用一系列操作:

  1. 用"代替","
  2. parseFloat ()
  3. toFixed (2)

你的期望是错误的&您可以将结果作为数字数组或逗号分隔的字符串,请参考下面的代码和输出。

var RESULT = YOUR_RESPOSE.map(function(a){
['Poured','Sold', 'Variance', 'Loss'].forEach(function(v){
 if(typeof a[v] === "string"){
    // if you want as an array
    a[v] = a[v].split(',').map(function(s){return isNaN(s) ? s : (+s).toFixed(2)});
    // if you want as an string
    //a[v] = a[v].split(',').map(function(s){return isNaN(s) ? s : (+s).toFixed(2)}).join(',');
 }
});
return a;
})

"[{"ID":"September-2016","Product":"September-2016","Poured":["111.00","759.07"],"Sold":["107.00","660.97"],"Loss":["-4.00","98.10"],"Variance":["-3.67"],"startDate":"2016-09-01","endDate":"2016-09-22"},{"ID":"November-2015","Product":"November-2015","Poured":["53.00","690.25"],"Sold":["52.00","953.60"],"Loss":["-736.65"],"Variance":["-1.37"],"startDate":"2015-11-20","endDate":"2015-11-30"},{"ID":"May-2016","Product":"May-2016","Poured":["156.00","401.65"],"Sold":["151.00","192.51"],"Loss":["-5.00","209.14"],"Variance":["-3.33"],"startDate":"2016-05-03","endDate":"2016-05-31"},{"ID":"March-2016","Product":"March-2016","Poured":["49.00","260.22"],"Sold":["49.00","399.14"],"Loss":["138.92"],"Variance":["0.28"],"startDate":"2016-03-01","endDate":"2016-03-09"},{"ID":"June-2016","Product":"June-2016","Poured":["162.00","126.88"],"Sold":["161.00","718.62"],"Loss":["-408.26"],"Variance":["-0.25"],"startDate":"2016-06-01","endDate":"2016-06-30"},{"ID":"July-2016","Product":"July-2016","Poured":["160.00","185.68"],"Sold":["154.00","882.40"],"Loss":["-5.00","303.28"],"Variance":["-3.31"],"startDate":"2016-07-01","endDate":"2016-07-31"},{"ID":"January-2016","Product":"January-2016","Poured":["355.00","509.26"],"Sold":["179.00","696.72"],"Loss":["-175.00","812.54"],"Variance":["-49.45"],"startDate":"2016-01-01","endDate":"2016-01-31"},{"ID":"February-2016","Product":"February-2016","Poured":["150.00","980.73"],"Sold":["146.00","248.72"],"Loss":["-4.00","732.01"],"Variance":["-3.13"],"startDate":"2016-02-01","endDate":"2016-02-29"},{"ID":"December-2015","Product":"December-2015","Poured":["167.00","843.42"],"Sold":["163.00","732.95"],"Loss":["-4.00","110.47"],"Variance":["-2.45"],"startDate":"2015-12-01","endDate":"2015-12-31"},{"ID":"August-2016","Product":"August-2016","Poured":["168.00","853.51"],"Sold":["160.00","24.84"],"Loss":["-8.00","828.67"],"Variance":["-5.23"],"startDate":"2016-08-01","endDate":"2016-08-31"}]"

您使用术语"整数",但我假设您指的是"数字"(而不是"浮点数",因为在JS中不存在这个概念)—因为整数根据定义没有小数部分。

JavaScript中的数字没有也不能有千个分隔符,也没有可指定的精度——换句话说,1.00完全等同于1。因此,不能将字符串转换为带有分隔符和精度的不存在的整数形式。

如果你愿意的话,可以查看ES规范中关于数字字面值的部分。

千位分隔符和/或一些固定精度是数字表示的方面,以字符串的形式