Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.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# 在插入Mysql表时,如何将金额字段四舍五入到2位小数_C#_Asp.net_Mysql_.net 2.0 - Fatal编程技术网

C# 在插入Mysql表时,如何将金额字段四舍五入到2位小数

C# 在插入Mysql表时,如何将金额字段四舍五入到2位小数,c#,asp.net,mysql,.net-2.0,C#,Asp.net,Mysql,.net 2.0,如何在将值插入到mysql数据库之前将其舍入到2位小数。假设在插入数据库时,如果我的金额字段为800,我想将其四舍五入为800.00,并且如果我输入234.56,我想按原样插入,如果345.5655意味着我想以345.56的形式插入字符串 Console.WriteLine("{0:0.##}", value); 假设将值存储在十进制列中 Decimal value = 345.5655M; Decimal roundedValue = Math.Round(value, 2); 然后将ro

如何在将值插入到
mysql
数据库之前将其舍入到2位小数。假设在插入数据库时,如果我的金额字段为
800
,我想将其四舍五入为
800.00
,并且如果我输入
234.56
,我想按原样插入,如果
345.5655
意味着我想以
345.56

的形式插入字符串

Console.WriteLine("{0:0.##}", value);

假设将值存储在
十进制列中

Decimal value = 345.5655M;
Decimal roundedValue = Math.Round(value, 2);
然后将
roundedValue
插入数据库

如果要控制舍入,可以在指定值的地方使用重载

如果在将值插入数据库之前未对其进行舍入(假设数据库的精度为2),则可能会截断(而不是舍入)该值:

当为此类[十进制]列分配的值在小数点后的位数超过指定比例所允许的位数时,该值将转换为该比例。(精确行为是特定于操作系统的,但通常效果是截断到允许的位数。)

Decimal
存储创建时使用的精度,这意味着
3.9M.ToString()
返回
3.9
,而
3.90M.ToString()
返回
3.90
(即使数字相等)。但是,使用
Math.Round
将截断任何尾随的零位小数。如果要将
3.9M
四舍五入为
3.90M
,则需要从字符串中解析数字:

var roundedValue = Decimal.Parse(
   value.ToString("F2", CultureInfo.InvariantCulture),
   CultureInfo.InvariantCulture
);

但是,我不知道MySQL是否会保留后面的零位小数。

如果您使用的是参数化/准备好的语句和MySQL提供程序,您只需使用普通的舍入函数(
Math.Round()
)并将其结果用作执行查询的参数值:

using(var command = connection.CreateCommand()) 
{
  command.Text = "INSERT INTO MyTable (Col1, Col2) VALUES (@v1, @v2)";
  var parameter1 = command.CreateParameter();
  parameter1.Name = "@v1";
  parameter1.Value = Math.Round(myValue, 2);
  command.Parameters.Add(parameter1);
  // ... 
  command.ExecuteNonQuery();
}

但是如果我的值为
3.90
如果我使用你的代码,我得到的值为
3.9
我该怎么办