SQL Server 将小数转换成分数的方法 dbo.cusf_DecimalToFraction(@DecimalValue DECIMAL(18, 10))

 

复制代码
USE TESTDB
GO

-- =============================================
-- Author:      WRN
-- Create date: 2024-11-25 16:30:34
-- Database:    TESTDB
-- Description:   将小数转成分数形式
-- =============================================



ALTER FUNCTION dbo.CusF_DecimalToFraction (@DecimalValue DECIMAL(18, 10))
RETURNS VARCHAR(50)
AS
BEGIN
  DECLARE @numerator INT;
  DECLARE @denominator INT;
  DECLARE @gcd INT;
  DECLARE @tempNumerator INT;
  DECLARE @tempDenominator INT;
  DECLARE @fraction VARCHAR(50);

  -- 假设我们有一个简单的分数化算法(这里只是一个示例)
  SET @numerator = @DecimalValue * 1000000; -- 乘以一个大数以避免浮点误差
  SET @denominator = 1000000;

  -- 计算最大公约数(GCD)
  SET @tempNumerator = @numerator;
  SET @tempDenominator = @denominator;
  WHILE @tempDenominator <> 0
  BEGIN
  SET @gcd = @tempDenominator;
  SET @tempDenominator = @tempNumerator % @tempDenominator;
  SET @tempNumerator = @gcd;
  END;

  -- 约分分数
  SET @numerator = @numerator / @gcd;
  SET @denominator = @denominator / @gcd;

  -- 构建分数形式的字符串
  SET @fraction = CAST(@numerator AS VARCHAR) + '/' + CAST(@denominator AS VARCHAR);

  RETURN @fraction;
END;

-- 使用函数 调用此方法即可
 -- SELECT dbo.DecimalToFraction(0.75) AS Fraction;
GO

复制代码

调用方式及结果:

 

posted @   余路还要走多久  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示