相关疑难解决方法(0)

你如何围绕Perl中的浮点数?

如何将十进制数(浮点)舍入到最接近的整数?

例如

1.2 = 1
1.7 = 2
Run Code Online (Sandbox Code Playgroud)

floating-point perl rounding

168
推荐指数
5
解决办法
33万
查看次数

如何在C#中舍入到最接近的整数

我怎样才能像这样舍入值:

1.1 => 1
1.5 => 2
1.9 => 2
Run Code Online (Sandbox Code Playgroud)

__CODE__没有帮助我.有任何想法吗?

c# rounding

83
推荐指数
6
解决办法
19万
查看次数

将小数序列化为JSON,如何舍入?

我上课了

public class Money
{
    public string Currency { get; set; }
    public decimal Amount { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

并希望将其序列化为JSON.如果我使用JavaScriptSerializer我得到

{"Currency":"USD","Amount":100.31000}
Run Code Online (Sandbox Code Playgroud)

由于API我必须符合需要JSON数量最多两位小数,我觉得应该可以以某种方式改变JavaScriptSerializer序列化十进制字段的方式,但我不知道如何.还有就是SimpleTypeResolver你可以在构造函数中通过,但它只能在类型,只要我能理解工作.该JavaScriptConverter,您可以通过添加RegisterConverters(...)似乎是要进行Dictionary.

我想得到

{"Currency":"USD","Amount":100.31}
Run Code Online (Sandbox Code Playgroud)

在我序列化之后.此外,改为双倍是不可能的.我可能需要进行一些舍入(100.311应该变为100.31).

有谁知道如何做到这一点?是否有替代方案JavaScriptSerializer可以让您更详细地控制序列化?

c# json javascriptserializer

22
推荐指数
4
解决办法
3万
查看次数

MidimalRounding的Decimal.Round默认设置

以下适用:

var rounded = Decimal.Round(7.635m, 2);
//rounded: 7.63
Run Code Online (Sandbox Code Playgroud)

对我来说,这是错误和意想不到的行为.我假设的价值7.64.

要做到这一点,我可以这样做:

var rounded = Decimal.Round(7.635m, 2, MidpointRounding.AwayFromZero);
//rounded: 7.64
Run Code Online (Sandbox Code Playgroud)

这怎么可能不是默认行为Decimal.Round?有什么好理由吗?

.net c# rounding

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

Javascript toFixed功能

预期结果:

(1.175).toFixed(2) = 1.18 and
(5.175).toFixed(2) = 5.18
Run Code Online (Sandbox Code Playgroud)

但在JS中显示:

(1.175).toFixed(2) = 1.18 but 
*(5.175).toFixed(2) = 5.17*
Run Code Online (Sandbox Code Playgroud)

如何纠正这个问题?

javascript tofixed

13
推荐指数
2
解决办法
7163
查看次数

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

.Net Round Bug

可能重复:
在C#中:Math.Round(2.5)结果是2(而不是3)!你在跟我开玩笑吗?

.Net 3.5 SP1的Math.Round函数似乎将0.5舍入为零,而它的舍入值为1.5到2.0.我用十进制数测试了这个,以下代码:

decimal pos = 0.5m;
decimal neg = -0.5m;

Console.WriteLine("Pos: {0} Rnd: {1}", pos, Math.Round(pos));
Console.WriteLine("Neg: {0} Rnd: {1}", neg, Math.Round(neg));

Console.ReadKey();
Run Code Online (Sandbox Code Playgroud)

此代码输出以下内容:

Pos:0.5 Rnd:0 Neg:-0.5 Rnd:0

这似乎是一个明显的错误.有一个已知的工作吗?我在Core2处理器和i7上测试了这个,所以它似乎不是硬件.而Reflector只是说decimal.round函数最终调用系统调用.

让我知道是否有其他人看到这个.

c# math rounding

10
推荐指数
0
解决办法
2050
查看次数

四舍五入

我有这个"科学应用程序",其中Single值应该在UI中呈现之前进行舍入.根据这篇MSDN文章,由于"精度损失",该Math.Round(Double, Int32)方法有时会"意外地"表现,例如将2.135舍入到2.13而不是2.14.

据我了解,这个问题与"银行家的四舍五入"无关(参见例如这个问题).

在应用中,有人显然选择了通过显式转换来解决这个问题Single,以一个Decimal舍入(即之前Math.Round((Decimal)mySingle, 2))来调用Math.Round(Decimal, Int32)过载来代替.除了可能出现的二进制到十进制转换问题之外,OverflowException如果该Single值太小或太大而不适合该Decimal类型,则该"解决方案"也可能导致抛出.

Math.Round(Double, Int32)如果转换失败,捕获此类错误以返回结果,并不会使我成为完美的解决方案.也不会重写应用程序以便一直使用Decimal.

是否有或多或少"正确"的方式来处理这种情况,如果是这样,它可能是什么?

.net c#

10
推荐指数
1
解决办法
629
查看次数

TSQL舍入VS C#舍入

这个问题让我发疯了.我正在使用Microsoft SQLExpress 2016来编写存储过程.其中一个要求是进行舍入.但是时不时地四舍五入是错误的.我发现T-SQL舍入与C#不完全相同,但为什么呢?

比较下面的两个舍入:

In T-SQL: ROUND(0.045, 2) --> this will produce 0.05

In C#: Math.Round(0.045, 2) --> this will produce 0.04
Run Code Online (Sandbox Code Playgroud)

为什么C#产生0.04?不应该是0.05吗?

我该怎么办才能使C#舍入= T-SQL舍入?谁能帮我?

谢谢,山姆


出于好奇,我在C#中尝试了这个:

Math.Round(0.055, 2)
Run Code Online (Sandbox Code Playgroud)

猜猜看,C#将它四舍五入?它四舍五入到0.06!现在,我完全糊涂了!

Math.Round(0.045, 2)   //this becomes 0.04
Math.Round(0.055, 2)   //this becomes 0.06
Run Code Online (Sandbox Code Playgroud)

有谁能解释一下?

谢谢

c# t-sql sql-server rounding sql-server-2016-express

9
推荐指数
2
解决办法
1706
查看次数

Javascript Math.Round与C#Math.Round有多接近?

通过阅读Stackoverflow问题,我知道编译器将查看您的号码,确定中点是偶数还是奇数,然后返回偶数.示例数字是2.5,其四舍五入到3.我已经尝试了我自己的小实验来看看会发生什么,但我还没有找到任何关于此的规范,或者即使它在浏览器之间是一致的.

这是一个使用jQuery进行显示的示例JavaScript代码段:

$(document).ready(function() {
    $("#answer").html(showRounding());
});

function showRounding() {
    var answer = Math.round(2.5);
    return answer;
}
Run Code Online (Sandbox Code Playgroud)

这返回'3'.

我想知道的是:JavaScript与C#等效的四舍五入有多接近?我这样做的原因是因为我想采用一种JavaScript方法,使用Math.Round并将相同的方法重写为C#,并且想知道在舍入数字后我能够得到相同的结果.

javascript c# rounding

7
推荐指数
2
解决办法
3333
查看次数