标签: rounding

toFixed()和toPrecision()之间的区别?

我是JavaScript的新手,刚刚发现toFixed()toPrecision()编号.但是,我无法弄清楚两者之间的区别是什么.

number.toFixed()和之间有什么区别number.toPrecision()

javascript precision rounding

115
推荐指数
6
解决办法
5万
查看次数

Python中的round()似乎没有正确舍入

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服务器上.在这里也看到.

没有创建我自己的圆形库,有什么方法可以解决这个问题吗?

python floating-point rounding

114
推荐指数
9
解决办法
21万
查看次数

舍入一个double将其转换为int(java)

现在我正在尝试这个:

int a = round(n);
Run Code Online (Sandbox Code Playgroud)

这里n是一个double,但它不工作.我究竟做错了什么?

java double int rounding

110
推荐指数
4
解决办法
24万
查看次数

在java中将double转换为整数

在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())将永远不需要截断任何内容并始终有效.

java double casting rounding

109
推荐指数
3
解决办法
42万
查看次数

Scala Doubles和Precision

是否有可以截断或舍入Double的函数?在我的代码中的某一点,我想要一个像:1.23456789舍入到的数字1.23

double scala truncate rounding

108
推荐指数
7
解决办法
10万
查看次数

将浮点数舍入到最近的整数?

正如标题所示,我想取一个浮点数并将其向下舍入到最接近的整数.但是,如果它不是一个整体,我总是想要舍入变量,无论它与下一个整数的接近程度如何.有没有办法做到这一点?

python floating-point integer rounding

101
推荐指数
7
解决办法
30万
查看次数

Javascript:将舍入数字格式化为N个小数

在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".

有任何想法吗?

javascript math decimal-point rounding

100
推荐指数
7
解决办法
13万
查看次数

0.1浮点数大于0.1双.我以为它是假的

让:

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不能在二进制完美表示,而双具有1516十进制精度位数,并且浮体具有只7.所以,他们两个都不到0.1,而双人更接近0.1.

我需要一个确切的解释true.

c c++ floating-point double rounding

100
推荐指数
5
解决办法
8537
查看次数

Javascript:累计到5的下一个倍数

我需要一个实用函数,它接受一个整数值(长度从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.

等等...

我该怎么做呢?

javascript math rounding

96
推荐指数
4
解决办法
6万
查看次数

截断两个小数位而不进行舍入

假设我的值为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)

c# math rounding

94
推荐指数
8
解决办法
15万
查看次数