小编典典

有没有一种方法可以将float转换为小数而不舍入并保留其精度?

sql

所以看来,如果你

CAST(field1 as decimal) field1

这将自动添加舍入。

原始定义为:

field1类型:浮点长度:8精度:53

我需要将其强制转换为十进制,因为我需要实体框架层才能将此字段生成为十进制(而不是双精度)。

有没有一种方法可以将其转换为十进制格式,从而保留原始精度,并且不会四舍五入?

我想避免不得不在转换中声明精度,因为:

  1. 涉及不同精度的100多个字段;以及
  2. 如果基础表将来发生更改,则可能会导致无法预料的错误的出现;以及
  3. 使管理更加困难。

阅读 207

收藏
2021-03-23

共1个答案

小编典典

你有没有尝试过:

SELECT Cast( 2.555 as decimal(53,8))

这将返回2.55500000。那是你要的吗?

更新:

显然,您也可以使用SQL_VARIANT_PROPERTY查找值的精度和小数位数。例子:

SELECT SQL_VARIANT_PROPERTY(Cast( 2.555 as decimal(8,7)),'Precision'),
SQL_VARIANT_PROPERTY(Cast( 2.555 as decimal(8,7)),'Scale')

退货 8|7

您可能可以在转换过程中使用它…

2021-03-23