标签: rounding

C++中的Round()在哪里?

重复:在C++中浮动的round()


我正在使用VS2008并且我已经包含math.h但我仍然找不到圆函数.它存在吗?

我在google上看到一堆"添加0.5并转换为int"解决方案.这是最好的做法吗?

c++ rounding

38
推荐指数
2
解决办法
10万
查看次数

C#十进制舍入不一致吗?

我一直在使用来自SQL Decimal(38,30)的C#中的十进制精度,我终于把它变成了一个舍入奇怪的东西.我知道我可能会忽视这里显而易见的事情,但我需要一点见解.

我遇到的问题是C#没有产生我认为是一致输出的东西.

decimal a = 0.387518769125m;
decimal b = 0.3875187691250002636113061835m;

Console.WriteLine(Math.Round(a, 11));
Console.WriteLine(Math.Round(b, 11));
Console.WriteLine(Math.Round(a, 11) == Math.Round(b, 11));
Run Code Online (Sandbox Code Playgroud)

产量

0.38751876912
0.38751876913
False
Run Code Online (Sandbox Code Playgroud)

嗯,0.38751876913?真?我在这里错过了什么?

来自MSDN:

如果小数位的数字是奇数,则将其更改为偶数.否则,它保持不变.

为什么我看到不一致的结果?额外的精度不会改变'小数位数'......

c# rounding

38
推荐指数
2
解决办法
5088
查看次数

四舍五入到小数点后第二位

可能重复:
PHP Round函数 - 最高可达2 dp?

我的问题是:

当我使用

ceil(3.6451895227869);
Run Code Online (Sandbox Code Playgroud)

我喜欢

4
Run Code Online (Sandbox Code Playgroud)

但我想要

3.65
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

UPDATE
Run Code Online (Sandbox Code Playgroud)

请记住:这应该像圆形时一样圆形到圆柱形

3.6333333333333

它不能是3.63但应该是3.64

php numbers rounding ceil

37
推荐指数
2
解决办法
6万
查看次数

Python楼层划分中的舍入错误

我知道在浮点运算中会发生舍入错误,但有人可以解释这个问题的原因:

>>> 8.0 / 0.4  # as expected
20.0
>>> floor(8.0 / 0.4)  # int works too
20
>>> 8.0 // 0.4  # expecting 20.0
19.0
Run Code Online (Sandbox Code Playgroud)

这在x64上的Python 2和3上都会发生.

据我所知,这是一个错误或非常愚蠢的规范,//因为我没有看到为什么最后一个表达式应该评估的原因19.0.

为什么a // b不简单定义为floor(a / b)

编辑:8.0 % 0.4也评估为0.3999999999999996.至少这是因为随后8.0 // 0.4 * 0.4 + 8.0 % 0.4评估的结果8.0

编辑:这不是浮点数学的重复吗?因为我问为什么这个特定的操作受到(可能是可以避免的)舍入错误的影响,以及为什么a // b没有定义为/等于floor(a / b)

备注:我猜这个不起作用的深层原因是地板划分是不连续的,因此具有无限的条件数使其成为一个不适定的问题.地板划分和浮点数简单地基本上是不兼容的,你永远不应该使用//浮点数.只需使用整数或分数.

python floating-point rounding python-2.7 python-3.x

37
推荐指数
5
解决办法
4331
查看次数

在C#中将小数舍入到最接近的四分之一

在c#中有一个简单的方法可以将小数舍入到最接近的四分之一iex0,x.25,x.50 x.75,例如0.21将舍入到0.25,5.03将舍入到5.0

在此先感谢您的帮助.

c# decimal rounding

36
推荐指数
2
解决办法
2万
查看次数

在Java中向上舍入的双重值

我有一个双值= 1.068879335我想用它只有两个十进制值,如1.07.

我试过这样的

DecimalFormat df=new DecimalFormat("0.00");
String formate = df.format(value);
double finalValue = Double.parseDouble(formate) ;
Run Code Online (Sandbox Code Playgroud)

这给了我以下例外情况

java.lang.NumberFormatException: For input string: "1,07"
     at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1224)
     at java.lang.Double.parseDouble(Double.java:510)
Run Code Online (Sandbox Code Playgroud)

可以有人告诉我我的代码有什么问题.

最后我需要finalValue = 1.07;

java double rounding numberformatexception

36
推荐指数
3
解决办法
17万
查看次数

使用BigDecimal数字进行舍入

我想设置两个BigDecimal数字ab.如在这个例子中:

BigDecimal a = new BigDecimal("2.6E-1095");
        BigDecimal b = new BigDecimal("2.7E-1105");
        int i = 112, j=1;

        BigDecimal aa = a.setScale(i+j);
        BigDecimal bb = b.setScale(i+j);
Run Code Online (Sandbox Code Playgroud)

当我运行时,我有这个例外:

java.lang.ArithmeticException: Rounding necessary
    at java.math.BigDecimal.divideAndRound(BigDecimal.java:1439)
    at java.math.BigDecimal.setScale(BigDecimal.java:2394)
    at java.math.BigDecimal.setScale(BigDecimal.java:2437)
Run Code Online (Sandbox Code Playgroud)

为什么需要舍入?如果我不想解决,请问什么是解决方案?

谢谢

java rounding bigdecimal

36
推荐指数
3
解决办法
6万
查看次数

Java 7和Java 8之间的舍入不一致是一个错误吗?

我发现DecimalFormatjava 7和java 8之间的类舍入不一致.这是我的测试用例:

DecimalFormatTest.java

import java.text.DecimalFormat;

public class DecimalFormatTest {
    public static void main(String[] args) {
        DecimalFormat format = (DecimalFormat) DecimalFormat.getInstance();
        format.setDecimalSeparatorAlwaysShown(true);
        format.setMinimumFractionDigits(1);
        format.setMaximumFractionDigits(1);
        System.out.println(format.format(83.65));
    }
}
Run Code Online (Sandbox Code Playgroud)

在Java(TM)SE运行时环境(版本1.7.0_51-b13)中,输出为:

83.6
Run Code Online (Sandbox Code Playgroud)

在Java(TM)SE运行时环境(版本1.8.0-b132)中,输出为:

83.7
Run Code Online (Sandbox Code Playgroud)

这是一个回归错误吗?或者随着Java 8的发布,舍入规则发生了变化?

java rounding

36
推荐指数
2
解决办法
9048
查看次数

Python - 四舍五入到最近的十

如果我得到数字46,我想要四舍五入到最近的十.我怎么能在python中做到这一点?

46到50.

python rounding

36
推荐指数
4
解决办法
8万
查看次数

round()根据参数的数量返回不同的结果

在使用round()函数时,我注意到我得到了两个不同的结果,具体取决于我是否没有明确选择要包含的小数位数或选择数字为0.

x = 4.1
print(round(x))
print(round(x, 0))
Run Code Online (Sandbox Code Playgroud)

它打印以下内容:

4
4.0
Run Code Online (Sandbox Code Playgroud)

有什么不同?

python rounding python-3.x

36
推荐指数
2
解决办法
1850
查看次数