Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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# MemoryDatabase小数中使用的.net核心未四舍五入到正确的长度_C#_.net_Core_Xunit - Fatal编程技术网

C# MemoryDatabase小数中使用的.net核心未四舍五入到正确的长度

C# MemoryDatabase小数中使用的.net核心未四舍五入到正确的长度,c#,.net,core,xunit,C#,.net,Core,Xunit,在.net core中,我将数据植入数据库,并将其作为DbContext中的modelbuilder: modelBuilder.Entity()在SQL Server中处理十进制的规则相当复杂。在C#中,decimal类型具有固定的精度,这比此处指定的18精度高。我不希望内存中的数据库与SQL Server语义完全匹配——毕竟,每个数据库的语义是不同的。如果您的测试实际上依赖于数据库的循环方式,那么可以说您的测试是错误的。如果不是,但完全取决于SQL Server的运行方式,那么最好使用Lo

在.net core中,我将数据植入数据库,并将其作为DbContext中的modelbuilder:


modelBuilder.Entity()在SQL Server中处理
十进制
的规则相当复杂。在C#中,
decimal
类型具有固定的精度,这比此处指定的
18
精度高。我不希望内存中的数据库与SQL Server语义完全匹配——毕竟,每个数据库的语义是不同的。如果您的测试实际上依赖于数据库的循环方式,那么可以说您的测试是错误的。如果不是,但完全取决于SQL Server的运行方式,那么最好使用LocalDB实例,而不是内存中的DB。或者以某种方式涉及
SqlDecimal
。在存储值之前(使用
Decimal.Round
)自己显式舍入值是另一种选择,即使您通常依赖数据库隐式地执行此操作。(所有这一切都是假设您正在使用
十进制
进行
结算价格
,而不是,比如说,
双精度
,否则您会遇到更大的问题。)