我如何在bbc上四舍五入到1位小数:带javascript的microbit w/o toFixed(),通常的乘法+;除法给出尾随的9999个数字?

我如何在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

给我26.29999999999999而不是26.3

和26.000000000001而不是26.0

我从温度传感器获得两个交替值:26.33和26.3200000

转换后我有:26.299999999

上面重复的数字只是一个例子。我在微位上的显示器不够宽,无法看到所有的图像

我使用toString()来显示值

不幸的是,toFixed()和toPrecision()在micro:位上不可用


舍入可以通过其他操作实现吗

使用下面的代码,我现在可以得到一个字符串形式的十进制数:

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);