【问题标题】:Convert SqlDecimal to Decimal将 SqlDecimal 转换为 Decimal
【发布时间】: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 我不需要保持比例但尽可能地保持转换时不希望溢出,这是这里描述的问题。如果不完全保真,则转换失败。

标签: sql clr decimal


【解决方案1】:

使用与 .NET decimal 类型匹配的精度的 SqlDecimal.Round

【讨论】:

    猜你喜欢
    • 2016-09-23
    • 2021-08-31
    • 2020-10-14
    • 1970-01-01
    • 2017-04-15
    • 2019-01-22
    • 2018-09-22
    • 2014-09-13
    • 1970-01-01
    相关资源
    最近更新 更多