首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Microsoft SQL的数学能力显示为十进制而不是整数(看起来就是这样)?

如何让Microsoft SQL的数学能力显示为十进制而不是整数(看起来就是这样)?
EN

Stack Overflow用户
提问于 2010-02-04 19:44:10
回答 3查看 4.6K关注 0票数 0

我有一个简单的查询:

代码语言:javascript
复制
    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#方式。

编辑后的帖子,只显示问题,没有任何具体的信息。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-04 19:48:44

精度会丢失,因为您的输入值都是整数。

试一试

代码语言:javascript
复制
SELECT POWER(( 1.0 + 3.0 / 100.0 ), ( 1.0 / 365.0 ))

如果这不能提供足够的精度,则将输入转换为浮点数:

代码语言:javascript
复制
SELECT POWER(( CAST(1.0 as float) + CAST(3.0 AS float) / 100.0 ), ( 1.0 / 365.0 ))
票数 3
EN

Stack Overflow用户

发布于 2010-02-04 19:48:04

尝试:

代码语言:javascript
复制
SELECT POWER(( 1.0 + 3.0 / 100 ), ( 1.0 / 365 )) 

像这样的1 + 3 / 100表达式隐式使用整数运算,因此3/ 100是零,因为小数部分被截断了。

票数 1
EN

Stack Overflow用户

发布于 2010-02-04 19:48:38

代码语言:javascript
复制
SELECT POWER(( 1 + 3.0 / 100 ), ( 1 / 365.0 ))

任何(主流)语言中都会发生同样的事情。简单的运算符优先级问题和整数运算。没别的了

  • 1/365 = 0
  • Anything to power 0=1
  • ,1+3/ 100的左侧也等于1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2199315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档