javascript - 字符串的点相乘

标签 javascript string typescript numbers points

假设我有一个以这种格式声明的点列表:x1,y1 x2,y2

listOfPoints : string = "12.2, 13.0 198.2, 141";

我可以做什么来乘以 1.5,例如,这个字符串的每个数字? 我是否需要迭代 listOfPoints 并在每次出现 '、' 或 ' ' 时提取一个字符串,将该字符串转换为数字,将其乘以 1.5 并将其重新转换为字符串,最后将其放入新字符串(新点列表)?

或者有其他更有效的方法吗?

谢谢。

最佳答案

使用带有替换函数的正则表达式来匹配数字(可能带有小数),并替换为这些数字乘以所需的数字:

const listOfPoints = "12.2, 13.0 198.2, 141";
const multiplied = listOfPoints.replace(
  /\d+(?:\.\d+)?/g,
  match => match * 1.5
);
console.log(multiplied);

由于浮点问题,某些结果数字可能有尾随数字。如果您不想这样做,可以将相乘后的数字四舍五入到一定的小数位数:

const listOfPoints = "12.2, 13.0 198.2, 141";
const multiplied = listOfPoints.replace(
  /\d+(?:\.\d+)?/g,
  match => Math.round(1000 * match * 1.5) / 1000
);
console.log(multiplied);

关于javascript - 字符串的点相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58686318/

相关文章:

javascript - 用于寻找最佳实践的 jQuery 示例应用程序

java - 如何将 ZonedDateTime 格式化为字符串?

javascript - 确保值环绕 360 度时正确插值

typescript - .ts 文件不被视为 TypeScript 模块

angular - ionic 3 : Uncaught (in promise): ReferenceError: google is not defined ReferenceError

javascript - 2D 自顶向下小 map

c# - 返回要使用 javascript 打开的文件的 Web 服务。行动!

javascript - for 循环内 setInterval 中计数器变量 i 的范围

c# - 在 C# 中打开一个文件并替换字符串

c++,将输入字符串转换为数字,转换失败不应返回零