我是JavaScript的新手,刚刚发现toFixed()并toPrecision()编号.但是,我无法弄清楚两者之间的区别是什么.
number.toFixed()和之间有什么区别number.toPrecision()?
round()函数的文档声明您传递一个数字,并将小数点后的位置传递给round.因此它应该这样做:
n = 5.59
round(n, 1) # 5.6
Run Code Online (Sandbox Code Playgroud)
但是,实际上,良好的旧浮点怪异爬进来,你会得到:
5.5999999999999996
Run Code Online (Sandbox Code Playgroud)
出于UI的目的,我需要显示5.6.我在互联网上搜索并发现一些文档,这取决于我的Python实现.不幸的是,这发生在我的Windows开发机器和我尝试过的每台Linux服务器上.在这里也看到.
没有创建我自己的圆形库,有什么方法可以解决这个问题吗?
在Java中,我想将double转换为整数,我知道如果你这样做:
double x = 1.5;
int y = (int)x;
Run Code Online (Sandbox Code Playgroud)
你得到y = 1.如果你这样做:
int y = (int)Math.round(x);
Run Code Online (Sandbox Code Playgroud)
你可能会得到2.但是,我想知道:因为整数的双重表示有时看起来像1.9999999998或其他东西,是否有可能通过Math.round()创建一个双重表示仍然会导致截断的数字,而不是比我们正在寻找的舍入数字(即代码中代码为1而不是2)?
(是的,我的意思是这样的:x 是否有任何值,其中y将显示一个截断的结果而不是x的圆形表示?)
如果是这样的话:有没有更好的方法将double变为圆形int而不会有截断的风险?
想象一下:Math.round(x)返回一个long,而不是double.因此:Math.round()不可能返回一个看起来像3.9999998的数字.因此,int(Math.round())将永远不需要截断任何内容并始终有效.
是否有可以截断或舍入Double的函数?在我的代码中的某一点,我想要一个像:1.23456789舍入到的数字1.23
正如标题所示,我想取一个浮点数并将其向下舍入到最接近的整数.但是,如果它不是一个整体,我总是想要舍入变量,无论它与下一个整数的接近程度如何.有没有办法做到这一点?
在JavaScript中,将数字舍入到N个小数位的典型方法是:
function roundNumber(num, dec) {
return Math.round(num * Math.pow(10, dec)) / Math.pow(10, dec);
}
Run Code Online (Sandbox Code Playgroud)
然而,这种方法将舍入到最多 N个小数位,而我想要总是舍入到N个小数位.例如,"2.0"将四舍五入为"2".
有任何想法吗?
让:
double d = 0.1;
float f = 0.1;
Run Code Online (Sandbox Code Playgroud)
应该表达
(f > d)
Run Code Online (Sandbox Code Playgroud)
回来true还是false?
根据经验,答案是true.但是,我期待它false.
如0.1不能在二进制完美表示,而双具有15以16十进制精度位数,并且浮体具有只7.所以,他们两个都不到0.1,而双人更接近0.1.
我需要一个确切的解释true.
我需要一个实用函数,它接受一个整数值(长度从2到5位),向上舍入到5的下一个倍数,而不是最近的5的倍数.这是我得到的:
function round5(x)
{
return (x % 5) >= 2.5 ? parseInt(x / 5) * 5 + 5 : parseInt(x / 5) * 5;
}
Run Code Online (Sandbox Code Playgroud)
当我跑步时round5(32),它给了我30,我想要的地方35.
当我跑步时round5(37),它给了我35,我想要的地方40.
当我跑步时round5(132),它给了我130,我想要的地方135.
当我跑步时round5(137),它给了我135,我想要的地方140.
等等...
我该怎么做呢?
假设我的值为3.4679且想要3.46,如何在没有四舍五入的情况下截断到两位小数?
我试过以下但三个都给了我3.47:
void Main()
{
Console.Write(Math.Round(3.4679, 2,MidpointRounding.ToEven));
Console.Write(Math.Round(3.4679, 2,MidpointRounding.AwayFromZero));
Console.Write(Math.Round(3.4679, 2));
}
Run Code Online (Sandbox Code Playgroud)
这返回3.46,但看起来很脏,如何:
void Main()
{
Console.Write(Math.Round(3.46799999999 -.005 , 2));
}
Run Code Online (Sandbox Code Playgroud)