C#四舍五入到两位小数的浮点值
我有一个C#中的值: 我已尝试将值存储在这些变量中:C#四舍五入到两位小数的浮点值,c#,asp.net,asp.net-mvc,c#-4.0,double,C#,Asp.net,Asp.net Mvc,C# 4.0,Double,我有一个C#中的值: 我已尝试将值存储在这些变量中: double Number; float Number; 这两个值似乎都将这个数字四舍五入为15。。然而,不是15。。。我想把数字精确到14.99:/ Number= Math.Round(amount * (1 - calcPerc),2,MidpointRounding.AwayFromZero);\ 输出总是15。。。有没有办法把这个数字改为14.99而不是15 有人能帮我吗?假设您要截断小数点后2位的所有内容 decimal ca
double Number;
float Number;
这两个值似乎都将这个数字四舍五入为15。。然而,不是15。。。我想把数字精确到14.99:/
Number= Math.Round(amount * (1 - calcPerc),2,MidpointRounding.AwayFromZero);\
输出总是15。。。有没有办法把这个数字改为14.99而不是15
有人能帮我吗?假设您要截断小数点后2位的所有内容
decimal calcPerc = 14.995m;
decimal result = Math.Truncate(calcPerc * 100) / 100m; // 14.99
请试试这个
double n = 14.995;
double newNum = Math.Floor(n * Math.Pow(10, 2)) / Math.Pow(10, 2);
输出为14.99
试试这个
十进制数=14.995
数学楼层(编号*100)/100 什么是
amount
和calcPerc
(值和数据类型)?请给我们一个@himbrombee。我们不确定这是否正确,我更可能相信这是在转换为整数,但因为OP不是在说话……请注意,中点舍入。AwayFromZero
意味着当你必须舍入.5时,它会从零开始舍入:.5->1/-.5->-1。您可能更喜欢中点舍入。改为零
或检查哪个选项适合您的需要我看不出为什么这应该是无效的。对这次否决票有什么评论吗?不是我,但我想你是因为认为OP的需要而被否决的。如果15
是取整14.995
的正确结果,这是唯一合乎逻辑的猜测中点取整.ToZero
呢?(这与截断不同)使用Math.Pow(10,2)
而不是100
?@Rafalon的任何原因,因为它取值并将值提高到指定的幂。。读这篇文章,我知道Math.Pow是如何工作的,我只是想知道你为什么要这样做,你可以简单地写100
@Rafalon从技术上讲,这与写100d
是一样的,但是是的,你是对的。Math.Floor
在负数时失败Math.Floor
在负数时失败
double n = 14.995;
double newNum = Math.Floor(n * Math.Pow(10, 2)) / Math.Pow(10, 2);