Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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#_Winforms_Gridview - Fatal编程技术网

如何在c#中对十进制值进行四舍五入?

如何在c#中对十进制值进行四舍五入?,c#,winforms,gridview,C#,Winforms,Gridview,Am以十进制计算小数值,预期结果为345.00,但得到的结果为345.0000 我的代码是这十进制温度=6900*(5/100) 温度=345.0000如何舍入?我想显示345.00?我犯了什么错? 我试过这个代码Math.Round(tempdiscountprice,2)也是,但它在这里不起作用。帮帮我我认为您向我们显示了错误的代码,因为这样做不会得到345.00或345.0000。它总是得到0 你的temp应该是0,因为自从你这样做以来,你的5/100总是0。这就是为什么你的temp将69

Am以十进制计算小数值,预期结果为345.00,但得到的结果为345.0000

我的代码是这
十进制温度=6900*(5/100)

温度=345.0000如何舍入?我想显示345.00?我犯了什么错?
我试过这个代码
Math.Round(tempdiscountprice,2)也是,但它在这里不起作用。帮帮我

我认为您向我们显示了错误的代码,因为这样做不会得到
345.00
345.0000
。它总是得到
0

你的
temp
应该是
0
,因为自从你这样做以来,你的
5/100
总是
0
。这就是为什么你的
temp
6900*0
那么它将是
0

如果您向我们显示正确的代码,您的问题看起来像是显示问题,而不是取整问题

如果您想将数字格式化为字符串,请查看


我认为您向我们展示了错误的代码,因为这不会得到
345.00
345.0000
。它总是得到
0

你的
temp
应该是
0
,因为自从你这样做以来,你的
5/100
总是
0
。这就是为什么你的
temp
6900*0
那么它将是
0

如果您向我们显示正确的代码,您的问题看起来像是显示问题,而不是取整问题

如果您想将数字格式化为字符串,请查看


    • 我认为你没有展示你真正的代码。以下结果为0,因为(5/100)是使用整数算法计算的:

      decimal temp = 6900 * (5 / 100);
      Console.WriteLine(temp.ToString()); // result is 0
      
      如果使用decimal,将得到以下结果:

      decimal temp = 6900 * (5M / 100);
      Console.WriteLine(temp.ToString()); // result is 345.00
      
      但是,decimal类型不保留尾随零:

      decimal temp = 6900 * (5.0000M / 100);
      Console.WriteLine(temp.ToString()); // result is 345.0000
      
      在.NET 1.1中引入了这样的保留尾随零的方法,以便更严格地符合ECMA CLI规范

      但没有什么可以阻止您使用两位小数格式化输出,例如:

      decimal temp = 6900 * (5.0000M / 100);
      Console.WriteLine(temp.ToString("N2")); // result is 345.00
      

      我认为你没有展示你真正的代码。以下结果为0,因为(5/100)是使用整数算法计算的:

      decimal temp = 6900 * (5 / 100);
      Console.WriteLine(temp.ToString()); // result is 0
      
      如果使用decimal,将得到以下结果:

      decimal temp = 6900 * (5M / 100);
      Console.WriteLine(temp.ToString()); // result is 345.00
      
      但是,decimal类型不保留尾随零:

      decimal temp = 6900 * (5.0000M / 100);
      Console.WriteLine(temp.ToString()); // result is 345.0000
      
      在.NET 1.1中引入了这样的保留尾随零的方法,以便更严格地符合ECMA CLI规范

      但没有什么可以阻止您使用两位小数格式化输出,例如:

      decimal temp = 6900 * (5.0000M / 100);
      Console.WriteLine(temp.ToString("N2")); // result is 345.00
      

      正如
      user2864740
      在上面指出的,问题不在于舍入,而在于将值显示为字符串。尝试:

       decimal temp = 345.0000m;
       String.Format("{0:0.00}", temp)
      

      正如
      user2864740
      在上面指出的,问题不在于舍入,而在于将值显示为字符串。尝试:

       decimal temp = 345.0000m;
       String.Format("{0:0.00}", temp)
      

      看起来是显示/显示不舍入的问题。谢谢guyz,我现在用了这个代码
      temp.ToString(“N2”)
      看起来是显示/显示不舍入的问题。谢谢guyz,我现在用了这个代码
      temp.ToString(“N2”)
      嗨,乔,我试过
      temp.ToString(“N2”)
      工作很好,谢谢。我的原始代码是price=6900.00&Tax=5.00。嗨,乔,我尝试了temp.ToString(“N2”)工作正常,谢谢。我的原始代码是price=6900.00,Tax=5.00。