Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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 将负数转换为正数,而不影响js中的小数点_Javascript - Fatal编程技术网

Javascript 将负数转换为正数,而不影响js中的小数点

Javascript 将负数转换为正数,而不影响js中的小数点,javascript,Javascript,我需要把负数转换成正数。我的尝试如下 Math.abs(-4.0); 它将返回4作为答案。但我需要4.0作为答案。这里我不知道要设置的小数位。对于不同的数字,有不同的小数点值。实际上,这完全取决于web套接字输出。根据输入值,服务器端定义了不同的浮点,根据我们的要求没有任何模式 那么在js中,有没有更好的方法来处理这个问题而不需要单独获取小数点?您可以使用numbertoFixed方法,如下所示: var decimalPlaces=5//更改此选项可更改小数位数 console.log(M

我需要把负数转换成正数。我的尝试如下

Math.abs(-4.0);

它将返回4作为答案。但我需要4.0作为答案。这里我不知道要设置的小数位。对于不同的数字,有不同的小数点值。实际上,这完全取决于web套接字输出。根据输入值,服务器端定义了不同的浮点,根据我们的要求没有任何模式


那么在js中,有没有更好的方法来处理这个问题而不需要单独获取小数点?

您可以使用number
toFixed
方法,如下所示:

var decimalPlaces=5//更改此选项可更改小数位数

console.log(Math.abs(-4.0).toFixed(decimalPlaces))
如其他注释所述,您将无法保持精度
toFixed()
绝对不是一个解决方案,并且此问题具有有效的案例场景

我们必须做一些类似的事情,老师们输入一个分数(90.05),并在一个成绩册中为所有学生保留相同数量的小数。教师的等级因情况而异:

Teacher A | Teacher B | Teacher C
   90          90.5       4.95
   80          88.5       3.80
   75          80.0       5.00
解决此问题的一种方法是将数字保持为字符串并返回字符串值,特别是当请求以字符串形式出现时(来自输入、http请求等)

请注意,这是一个非常粗糙的实现(我们的实现更安全),但想法很简单:

函数字符串(n){
numberString=n.toString();
if(numberString[0]='-'){
返回编号字符串子字符串(1);
}
否则{
返回数字串;
}
}
log(absString('-1'));
log(absString('-2.0'));
log(absString('2.0'));

log(absString('-0.57'))如果这仅用于显示目的,则可以使用该对象适当设置值的格式。例如:

Intl.NumberFormat(
  undefined,
  { signDisplay: 'never', minimumSignificantDigits: 3, maximumSignificantDigits: 20 }
).format(-4.06364635454000); // "4.06364635454"
Intl.NumberFormat(
  undefined,
  { signDisplay: 'never', minimumSignificantDigits: 1, maximumSignificantDigits: 20 }
).format(-4.0); // "4"
Intl.NumberFormat(
  undefined,
  { signDisplay: 'never', style: 'currency', currency: 'EUR' }
).format(-4.06364635454000); // "€4.06"

javascript中的数字只显示所需的小数<代码>-4.0
将只是
-4
。。。如果您需要一个具有特定位数的字符串,请使用,
.toFixed
——但是请注意,这将导致一个字符串。我不知道要设置的小数位数。对于不同的数字,有不同的小数点值。实际上,这完全取决于服务响应。根据输入值,服务端定义了不同的浮点,根据我们的要求没有任何模式。所以输出小数点取决于输入小数点?-不幸的是,javascript认为像
4.0
4.00
4.00000
这样的值的小数位数为零-您需要创建一个函数,该函数的第二个参数为小数位数。。。因此
const abs=(n,d)=>Math.abs(n).toFixed(d)
然后用输出所需的小数位数作为第二个参数调用它,更简单的是,只需确保在输出需要显示小数位数的值的位置,使用
.toFixed(x)
,因为你知道你想要在你的输出中有多少个小数位,你到底想要实现什么?如果要保持精度,则不应对结果数字进行任何处理。但是如果你更关心格式,那么你最好使用toFixed()并定义一个相当恒定的小数精度,并坚持下去。对于不同的数字,有不同的小数点值。实际上,这完全取决于服务响应。根据输入值,服务端定义了不同的浮点,根据我们的要求没有任何模式。