我如何在bbc上四舍五入到1位小数:带javascript的microbit w/o toFixed(),通常的乘法+;除法给出尾随的9999个数字?
给我26.29999999999999而不是26.3 和26.000000000001而不是26.0 我从温度传感器获得两个交替值:26.33和26.3200000 转换后我有:26.299999999 上面重复的数字只是一个例子。我在微位上的显示器不够宽,无法看到所有的图像 我使用toString()来显示值 不幸的是,toFixed()和toPrecision()在micro:位上不可用我如何在bbc上四舍五入到1位小数:带javascript的microbit w/o toFixed(),通常的乘法+;除法给出尾随的9999个数字?,javascript,rounding,bbc-microbit,Javascript,Rounding,Bbc Microbit,给我26.29999999999999而不是26.3 和26.000000000001而不是26.0 我从温度传感器获得两个交替值:26.33和26.3200000 转换后我有:26.299999999 上面重复的数字只是一个例子。我在微位上的显示器不够宽,无法看到所有的图像 我使用toString()来显示值 不幸的是,toFixed()和toPrecision()在micro:位上不可用 舍入可以通过其他操作实现吗 使用下面的代码,我现在可以得到一个字符串形式的十进制数: temperatu
舍入可以通过其他操作实现吗 使用下面的代码,我现在可以得到一个字符串形式的十进制数:
temperatureReading = Math.round(temperatureReading * 10) / 10
我首先将数字乘以10,然后将结果转换为字符串。然后,我在最后一位数字前插入小数点。这给了我想要打印的字符串 首先是
temperatureReading
26.29999999999999999
?还应该注意的是,将temperatureReading=26.29999999999999999
粘贴到Safari控制台会产生26.3
。我必须检查并发布结果。Javascript不是您想要的语言。对于精度计算,数字没有舍入误差至关重要,不应使用JS。如果我没记错的话,FORTRAN就是为这种事情而设计的!我没有选择在micro:bit上使用FORTRAN
let temperatureStr = Math.round(temperatureReading * 10).toString()
let temperature = temperatureStr.slice(0, temperatureStr.length - 1) + "." + temperatureStr.slice(temperatureStr.length - 1);