C# 中点舍入
我试图对以下值进行四舍五入,但我不知道出了什么问题C# 中点舍入,c#,C#,我试图对以下值进行四舍五入,但我不知道出了什么问题 NewValue -=(System.Math.Round(Global.WorkData.ValueOld - System.Math.Round (Global.WorkData.ValueOld * 20, 0) / 20, 2 )); 这就是我所做的: NewValue -=(System.Math.Round(Global.WorkData.ValueOld, 2, MidpointRounding.AwayFromZero - S
NewValue -=(System.Math.Round(Global.WorkData.ValueOld - System.Math.Round (Global.WorkData.ValueOld * 20, 0) / 20, 2 ));
这就是我所做的:
NewValue -=(System.Math.Round(Global.WorkData.ValueOld, 2, MidpointRounding.AwayFromZero - System.Math.Round(Global.WorkData.ValueOld * 20, 2,MidpointRounding.AwayFromZero) / 20, 2 ));
你能告诉我我的密码出了什么问题吗?为什么我不能编译它?
谢谢您遗漏了一个括号:
NewValue -=(System.Math.Round(Global.WorkData.ValueOld, 2, MidpointRounding.AwayFromZero - System.Math.Round(Global.WorkData.ValueOld * 20, 2,MidpointRounding.AwayFromZero) / 20, 2 ));
NewValue -=(System.Math.Round(Global.WorkData.ValueOld, 2, MidpointRounding.AwayFromZero**)** - System.Math.Round(Global.WorkData.ValueOld * 20, 2,MidpointRounding.AwayFromZero) / 20, 2 );
希望这对你有所帮助
我认为你的目标如下:(但我不是100%)
您至少有一个括号错误,因此它试图从
中点舍入中减去一个十进制值
然而,我还是不明白你到底想做什么
我强烈建议您将此语句拆分—拆分对Round
的调用,然后使用值进行一次调用。例如:
decimal oldValue = Global.WorkData.ValueOld; // For convenience
decimal roundTo2 = Math.Round(oldValue, 2, MidpointRounding.AwayFromZero);
decimal roundTo20 = Math.Round(oldValue * 20, 2, MidpointRounding.AwayFromZero);
newValue -= roundTo2 - (roundTo20/20);
我仍然不知道你到底想对结果做什么——声明末尾的2是为了什么?你问题中的第一句话是什么意思?也许你想要:
decimal oldValue = Global.WorkData.ValueOld; // For convenience
decimal roundedBy20ths = Math.Round(oldValue * 20, 2,
MidpointRounding.AwayFromZero) / 20;
decimal remainder = Math.Round(oldValue - roundedBy20ths, 2,
MidpointRounding.AwayFromZero);
newValue -= remainder;
??也许是这样,但我真的不知道
简短的语句使代码更清晰,让您更容易发现此类错误。谢谢Jon,我将尝试这个建议。我认为应该在编写代码时练习简短的语句,以便更清晰。这是某人的密码,我们正试图更新他的密码。这很乏味:-(嗨,劳埃德,谢谢你的代码,但这些似乎不起作用:-(
decimal oldValue = Global.WorkData.ValueOld; // For convenience
decimal roundedBy20ths = Math.Round(oldValue * 20, 2,
MidpointRounding.AwayFromZero) / 20;
decimal remainder = Math.Round(oldValue - roundedBy20ths, 2,
MidpointRounding.AwayFromZero);
newValue -= remainder;