Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#四舍五入到两位小数的浮点值_C#_Asp.net_Asp.net Mvc_C# 4.0_Double - Fatal编程技术网

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

我有一个C#中的值:

我已尝试将值存储在这些变量中:

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);