【发布时间】:2011-07-05 13:08:12
【问题描述】:
问题在于 SqlDecimal 数据类型比 CLR 原生的 Decimal 数据类型包含更多位。那么如何以最实用的方式在两者之间进行映射。这不太好用:
SqlDecimal x = ...
decimal z = x.value; // can overflow
要让更多的数字通过,可以去掉尾随的零。但是,如果您接受转换给您带来的精度损失,您会期望会有一个函数来执行这种有损转换。
有吗?或者这里的最佳做法是什么?
我已经创建了一个函数,它既可以裁剪又可以删除尾随零来进行转换,但如果存在这样的函数,我宁愿使用标准的 .NET BCL 函数。
【问题讨论】:
-
空格和小数有什么关系?没有这个概念……
-
如果您需要保持 SQL Decimal 类型的规模,为什么不将其保留为
SqlDecimal?为什么需要将其转换为decimal? -
@Daniel - 这将是尾随零,而不是空格。
-
@Damien 我不需要保持比例但尽可能地保持转换时不希望溢出,这是这里描述的问题。如果不完全保真,则转换失败。