我有一个简单的查询:
SELECT POWER(( 1 + 3 / 100 ), ( 1 / 365 ))根据MS SQL POWER(( 1+3/ 100 ),(1/ 365 )) =1,而实际上是1,000080986
如何让Power返回Decimal而不是int。这个话题看起来和Raising a decimal to a power of decimal?很相似,但是这个话题涉及到c#,我需要用到SQL。如果没有其他方法,我将使用c#方式。
编辑后的帖子,只显示问题,没有任何具体的信息。
发布于 2010-02-04 19:48:44
精度会丢失,因为您的输入值都是整数。
试一试
SELECT POWER(( 1.0 + 3.0 / 100.0 ), ( 1.0 / 365.0 ))如果这不能提供足够的精度,则将输入转换为浮点数:
SELECT POWER(( CAST(1.0 as float) + CAST(3.0 AS float) / 100.0 ), ( 1.0 / 365.0 ))发布于 2010-02-04 19:48:04
尝试:
SELECT POWER(( 1.0 + 3.0 / 100 ), ( 1.0 / 365 )) 像这样的1 + 3 / 100表达式隐式使用整数运算,因此3/ 100是零,因为小数部分被截断了。
发布于 2010-02-04 19:48:38
SELECT POWER(( 1 + 3.0 / 100 ), ( 1 / 365.0 ))在任何(主流)语言中都会发生同样的事情。简单的运算符优先级问题和整数运算。没别的了
https://stackoverflow.com/questions/2199315
复制相似问题