相关疑难解决方法(0)

圆十进制值最接近0.01?

可能重复:
c# - 如何将十进制值舍入到2个小数位(用于页面上的输出)

如何将十进制值舍入到最接近的0.05值?,链接的SO帖子也讨论了类似的主题,但它不是我预期的输出.

我需要像这样转换小数值

16.489-->16.49
16.482-->16.48
16.425-->16.43
7.67 --> 7.67 (no conversion)
Run Code Online (Sandbox Code Playgroud)

我可以使用下面的C#方法来转换值

  Math.Round(16.482*20)/20;
Run Code Online (Sandbox Code Playgroud)

但这种方法对我不起作用,它给出了以下结果

16.489-->16.5 
16.482-->16.5 
7.67 --> 7.7
16.425-->16.45 
Run Code Online (Sandbox Code Playgroud)

在c#中用优雅的方式来做到这一点.

c# numbers rounding

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

为什么这个十进制在ToString()上显示8位小数?

我有一个类型decimal的变量,其值为1.0.我将它保存到SQL Server 2012表的列中,其类型为decimal(10, 8).

检索该值后,我看到它是1,但是当我调用时ToString(),返回的值是"1.00000000"(见下文).

我意识到8位小数对应于数据库中的数据类型.但是,Entity Framework生成的属性中没有任何属性或任何内容可以为其提供此类行为,因此我不知道这是如何发生的.

以下是我在立即窗口中执行的一些测试:

myDecimal
1
myDecimal.ToString()
"1.00000000"
myDecimal == 1
true
myDecimal == 1.0m
true
Run Code Online (Sandbox Code Playgroud)

正如你在前两次测试中看到的那样,它也不是浮点错误的情况(不是因为十进制是定点而我没想到它,但我不得不尝试它,因为我用完了想法).

知道小数ToString()是如何产生一个8位小数的字符串?

编辑:为了比较,请查看下面的测试.

1m.ToString()
"1"
Run Code Online (Sandbox Code Playgroud)

c# sql-server entity-framework decimal

4
推荐指数
2
解决办法
865
查看次数

如何转换小数点?

可能重复:
c# - 如何将十进制值舍入到2个小数位(用于页面上的输出)

我的值为1.564和1.565我需要将此值舍入为1.56和1.56,这在c#中适用于此.

c# function rounding

3
推荐指数
1
解决办法
214
查看次数

如何正确舍入和格式化小数?

可能重复:
c# - 如何将十进制值舍入到2个小数位(用于页面上的输出)

我正在尝试将小数点显示为四位小数.数据库将我的数字四舍五入到小数点后4位,但它返回的数字为尾随0(由于字段的小数精度),因此类似于9.45670000.然后,当我这样做时:

string.Format("{0:#,#.####}", decimalValue);
Run Code Online (Sandbox Code Playgroud)

我在页面上得到的输出是9.4567,这就是我想要的.

但是,如果从DB返回的数字是9.45600000,则格式化后的输出为9.456

但我需要显示的是9.4560

如何格式化我的小数,以便小数位数始终为4?

更新:此外,如果我想动态确定小数位数,是否可以使用变量(而不是.0000)?

.net c# vb.net sql-server asp.net

3
推荐指数
1
解决办法
4143
查看次数

点休息后C#十进制数轮

可能重复:
c# - 如何将十进制值舍入到2个小数位(用于页面上的输出)

如何在点之后长时间休息返回小数:

3.786444499963
Run Code Online (Sandbox Code Playgroud)

对此:

3.787
Run Code Online (Sandbox Code Playgroud)

它不仅削减了分数,还围绕其余数字

c#

2
推荐指数
1
解决办法
2777
查看次数

将数字转换为带有两位小数的数字

对不起,如果已经问过这个问题,我就找不到如何在我的问题中做到这一点.我将一个包含1-20的数字列表的文件导入到一个列表框中,然后显示总值和平均值到文本框中.我正在得到正确的计算它只是我不知道如何转换它们.

我的代码是:

int i = 0;
int result = 0;
while (i < lstbxDisplayInfo.Items.Count)
{
   result += Convert.ToInt32(lstbxDisplayInfo.Items[i++]);
}
//Displays average.
txtAverage.Text = Convert.ToString((double)result / i);
//Displays Amount.
txtAmount.Text = Convert.ToString((double) i);
Run Code Online (Sandbox Code Playgroud)

我的输出是:

Average: 10.5
Total Amount: 20
Run Code Online (Sandbox Code Playgroud)

我需要输出为:

Average: 10.50
Total Amount: 20.00
Run Code Online (Sandbox Code Playgroud)

c#

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

四舍五入到小数点后两位 C#

我感兴趣的是如何以某种特定的方式将 double 变量舍入到小数点后两位。我到底是什么意思?Math.Round ( number, 2) 工作正常,但是......我有像 17.0449999 这样的数字......

Math.Round(17.044999, 2) // 17.04
Run Code Online (Sandbox Code Playgroud)

但在那种情况下,我想得到 17.05。我找到了一种方法来做到这一点,例如:

Math.Round(17.044999, 3) // returns 17.045
Math.Round(17.045, 2) // returns 17.05
Run Code Online (Sandbox Code Playgroud)

我想问的是有没有其他/更好/更简单的方法来做到这一点?

[编辑]:

我想我发现这有点奇怪的问题。从一开始就:

我们说具体的数字。我必须从奖金中计算 5%,在这种情况下,奖金是 340,9。当我在 Windows 计算器 340,9 * 0.05 中进行计算时,结果是 17,045。我在 Excel 中进行计算时得到的结果相同。但是当我在 C# 中做同样的计算时,我得到类似 17,04499999998 的结果。这显然非常接近 17.045,我们可以轻松地将其四舍五入。但关键是我不能将每个结果四舍五入到小数点后 3 位,因为这可能会改变其他结果。

似乎是特殊情况或 C# 计算“太准确”。

c#

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

C# 小数格式仅显示小数部分

我正在寻找String.FormatToString()decimal得到小数部分。 '123.56m => "56"

c# string.format

0
推荐指数
1
解决办法
546
查看次数

十进制舍入到2精度,使X转换为X.00 C#

首先,这不是一个重复的问题,我需要总是有2个精度小数

例如
2应转换为2.00
0应转换为0.00
0.5应转换为0.50

输出数必须是小数

我尝试过的事情

decimal val = 0.5000M
decimal d = Math.Round(val, 2);//gives 0.5 i need 0.50
Run Code Online (Sandbox Code Playgroud)

注意:我不打算将十进制转换为字符串,因为我需要将其作为仅接受十进制值的soap请求发送,因此我没有灵活性将其转换为字符串.

由Jakub Lortz回答的以下代码更新工作正常虽然看起来很复杂

Jakub Lortz的解决方案1

decimal twoPoint00 = new Decimal(200, 0, 0, false, 2); decimal twoPoint0 = new Decimal(20, 0, 0, false, 1); Console.WriteLine(twoPoint00) // prints 2.00 Console.WriteLine(twoPoint0) // prints 2.0

博格丹的解决方案2

他给出了非常简单的解决方案,这也将起作用
decimal val = 0.5000M;
string result = string.Format("{0:f2}", val); decimal d; Decimal.TryParse(result, out d);

.net c#

-2
推荐指数
1
解决办法
142
查看次数

将十进制值转换为c#中的两个精度

我想要十进制值到两个精度输出,如下面的输入,

  1. 0
  2. 78.8798
  3. 6
  4. 0.986

  1. 0.00
  2. 78.88
  3. 6.00
  4. 0.99

在c#十进制值到十进制或字符串.

c# decimal

-3
推荐指数
1
解决办法
121
查看次数