Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将字符串解析为浮点数_Javascript_React Native_Floating Point - Fatal编程技术网

Javascript 将字符串解析为浮点数

Javascript 将字符串解析为浮点数,javascript,react-native,floating-point,Javascript,React Native,Floating Point,我正在努力解析从txt文件中读取的字符串。当我使用parseFloat()解析它时,它不会像预期的那样工作,例如,当我记录一个解析为float的“45.64”时,它显示:45.6399938964844。 这是我的代码: const linesProd = productosTxt.split(/\r?\n/); var productosObject = { "Productos": [] }; linesProd.forEach(line => {

我正在努力解析从txt文件中读取的字符串。当我使用parseFloat()解析它时,它不会像预期的那样工作,例如,当我记录一个解析为float的“45.64”时,它显示:45.6399938964844。 这是我的代码:

  const linesProd = productosTxt.split(/\r?\n/);
  var productosObject = { "Productos": [] };
  linesProd.forEach(line => {
    const fields = line.split("|");
    
    if (fields[0]){
      console.log(fields[0])
      console.log(typeof(fields[5]))
      var fieldsObject = {
        productId: fields[0],
        id: fields[1],
        name: fields[2],
        cost: Number.parseFloat(fields[3]),
        price1: Number.parseFloat(fields[4]),
        price2: Number.parseFloat(fields[5]),
      };
      
      productosObject = { ...productosObject, "Productos": [...productosObject.Productos, fieldsObject] };
    }
  });
这些字段(成本、价格1、价格2)用于以数字格式从我的txt文件中保存这些字段。txt文件中的行如下所示:

A1|1|name1|50.5|70|80

A2|2|name2|25.25|35.6|90.15
我已经看了这里的一些帖子,但找不到合适的答案

任何帮助都将不胜感激,谢谢

编辑1: 数组中字段的日志(更改了一些变量名,但它们可能相同,因此您可以看到)


改用+yourString

  const linesProd = productosTxt.split(/\r?\n/);
  var productosObject = { "Productos": [] };
  linesProd.forEach(line => {
    const fields = line.split("|");
    
    if (fields[0]){
      console.log(fields[0])
      console.log(typeof(fields[5]))
      var fieldsObject = {
        productId: fields[0],
        id: fields[1],
        name: fields[2],
        cost: +fields[3],
        price1: +fields[4],
        price2: +fields[5],
      };
      
      productosObject = { ...productosObject, "Productos": [...productosObject.Productos, fieldsObject] };
    }
  });
试试这个:

const linesProd = productosTxt.split(/\r?\n/);
var productosObject = { Productos: [] };
linesProd.forEach((line) => {
  const fields = line.split("|");

  if (fields[0]) {
    console.log(fields[0]);
    console.log(typeof fields[5]);
    var fieldsObject = {
      productId: fields[0],
      id: fields[1],
      name: fields[2],
      cost: Number.parseFloat(fields[3]).toFixed(2),
      price1: Number.parseFloat(fields[4]).toFixed(2),
      price2: Number.parseFloat(fields[5]).toFixed(2),
    };

    productosObject = { ...productosObject, Productos: [...productosObject.Productos, fieldsObject] };
  }
});

将解析改为小数点后两位,这应该会给出您期望的数字。

它不起作用,它一直以一种意外的方式保存数字:“35.94”被转换为35.939998626708984这很奇怪,我在我的电脑上试过了,工作正常,您能记录字段数组并将其添加到问题中吗?完成,我添加了一张日志的图片:console.log(+“35.94”)和console.log(+`${fields[3]}`),只是为了检查txtOmg中的数字是否有问题,我刚刚在控制台上记录了该字段,它是正确的,但是当它被分配时,是当值出错时,这可能是什么?问题是我必须将这些属性保留为数字,当使用tofixed时,它返回一个字符串