PHP 将小数转换为分数并返回?

2023-12-24

我希望用户能够输入如下分数:

 1/2
 2 1/4
 3

并将其转换成相应的十进制,保存在MySQL中,这样我就可以通过它进行排序并对其进行其他比较。

但在向用户显示时我需要能够将小数转换回分数

所以基本上我需要一个将分数字符串转换为十进制的函数:

fraction_to_decimal("2 1/4");// return 2.25

以及一个可以将小数转换为派系字符串的函数:

decimal_to_fraction(.5); // return "1/2"

我怎样才能做到这一点?


有时您需要找到一种方法来做到这一点,并且舍入是可以接受的。因此,如果您确定适合您的舍入范围,您可以构建这样的函数。将小数转换为最匹配的分数。您可以通过添加更多要测试的分母来提高准确性。

function decToFraction($float) {
    // 1/2, 1/4, 1/8, 1/16, 1/3 ,2/3, 3/4, 3/8, 5/8, 7/8, 3/16, 5/16, 7/16,
    // 9/16, 11/16, 13/16, 15/16
    $whole = floor ( $float );
    $decimal = $float - $whole;
    $leastCommonDenom = 48; // 16 * 3;
    $denominators = array (2, 3, 4, 8, 16, 24, 48 );
    $roundedDecimal = round ( $decimal * $leastCommonDenom ) / $leastCommonDenom;
    if ($roundedDecimal == 0)
        return $whole;
    if ($roundedDecimal == 1)
        return $whole + 1;
    foreach ( $denominators as $d ) {
        if ($roundedDecimal * $d == floor ( $roundedDecimal * $d )) {
            $denom = $d;
            break;
        }
    }
    return ($whole == 0 ? '' : $whole) . " " . ($roundedDecimal * $denom) . "/" . $denom;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 将小数转换为分数并返回? 的相关文章

随机推荐

  • 从顺序 Keras 模型中保存特定层

    我正在构建一个自动编码器并训练模型 以便目标输出与输入相同 我正在使用顺序 Keras 模型 当我使用 model predict 时 我希望它从特定层 Dense256 导出数组而不是输出 这是我当前的模型 model Sequentia
  • Youtube 数据 API:获取播放列表中每个视频的标题和文字记录

    我正在尝试获取播放列表中所有视频的标题和文字记录 这是到目前为止的代码 from googleapiclient discovery import build from youtube transcript api import YouTu
  • Java 泛型:摆脱未经检查的强制转换警告(内部描述的情况)

    请原谅不好的命名 下面描述的问题是对真实代码的非常粗略的简化和修改 我定义了以下类型 interface Bundle omitted interface Content
  • 如何使用 Identity 获取 ApplicationDbContext 中当前登录的用户 ID?

    我已经使用 Visual Studio 中的模板和身份预设 存储在应用程序中的用户帐户 创建了一个 net core 2 1 MVC 应用程序 并且我正在尝试自动化一些审核字段 基本上我想做的是重写 SaveChangesAsync 方法
  • 单页应用程序上的用户身份验证?

    我开发了一个单页应用程序原型 它在前端使用 Backbone 并从服务器上的瘦 RESTful API 获取数据 来自繁重的服务器端应用程序开发 php 和 python 我真的很喜欢使用厚客户端 MVC 的新的不同设计方法 但对于如何最好
  • 如何阻止 qUnit 中的全局故障?

    我是 qunit 的新手 正在尝试将其与现有环境集成 我在使用 jQuery 的页面上遇到的问题之一是 global failure 1 0 1 Rerun6 ms Uncaught ReferenceError is not define
  • 使用 Rspec 存根链式方法

    我想调用一个只返回一条记录的named scope 但是named scope返回一个数组 这不是什么大问题 因为我可以将它与 first链接起来 Model named scope param first 这有效 我正在努力解决的是如何对
  • 查找 git 提交的直接祖先(父母?)

    启动一个新的存储库并添加一些提交 03 01 17 10 50am tim tim mkdir test cd test git init Initialised empty Git repository in home tim test
  • 从 pandas 列中提取满足条件的属性

    假设我有一个 3 个不同变量的频率表 M1 M2 和 M3 在不同的实例上 P1 P4 tupl 0 7 0 2 0 1 0 0 1 0 2 0 6 0 2 0 6 0 4 0 df test pd DataFrame tupl colum
  • F# 值遮蔽 - 是否可以在同一范围内禁用值遮蔽

    由于复制 粘贴 我在自己的代码中发现了一个错误 相同的值名称会被同一范围内的复制 粘贴所遮盖 let func let a 1 let a something else 在 C 中我不会通过编译 有没有办法禁用阴影 至少在同级别范围内 Th
  • 如何在 GGplot2 中向堆积条形图添加单个标签

    我想向 GGplot2 中的堆积条形图添加一个数字标签 我有以下代码 Load the packages library dplyr library readr library tidyr library ggplot2 library R
  • 我可以确定Mysql的Last Insert Id吗?

    我有最新版本的 Connector Net 我知道有一个属性MySqlCommand called LastInsertedId 我可以确定它返回最后一个插入 ID 吗 我的意思是 当同时有两个插入时 我能确定我会得到正确的值吗 我是怎么遇
  • 如何在android中获取视频的缩略图

    我需要一些帮助来创建从我的 Android 手机录制的视频的缩略图 我从中得到了这个代码Link https acadgild com blog android video capture example using camera 我修改了
  • 在与 Electron 相同的 BrowserWindow 中拥有两个独立的(就历史记录/cookies/本地存储而言)BrowserViews

    假设我有两个BrowserView在相同的BrowserWindow和一个 UI 按钮 允许用户在显示之间切换bv1 or bv2 就像 Firefox Chrome 等浏览器中的 选项卡 系统一样 允许您在不同页面之间切换 browser
  • 使用 XML 直接签署 Office Word 文档

    我正在尝试使用 C 以直接 XML 格式签署 Microsoft Office Word 文件 这里出现了一些问题和歧义 例如 我应该如何填写摘要值 我应该为每个引用准确摘要什么值 以及我应该为每个转换摘要什么值 我应该签署什么值来创建Si
  • Access-Control-Allow-Headers 不允许 Ajax 请求头字段 Key

    尝试构建 DNN 服务框架 WebAPI 但我在使用 CORS 来使用它时遇到问题 我拥有所有适当的标题 我认为 但它似乎仍然不起作用 Error XMLHttpRequest cannot load http www dnndev me
  • 如何统计每页使用的 MySQL 查询总数?

    PHP 或 MySQL 中是否有内置函数可以提供页面上使用的 MySQL 查询总数 我在很多网站 主要是论坛 上看到 他们在底部都有一条消息 上面写着 在 0 6 秒内生成了 20 个查询的页面 如果没有内置任何内容 那么我将在数据库类中添
  • Java 中的 DataTable 等效项 [重复]

    这个问题在这里已经有答案了 Java 中是否有等效的 C DataTable A 最近被问过类似的问题 https stackoverflow com questions 1194971 dataset class in java Resu
  • App.XAML 你在哪里?

    我是 WPF 新手 创建了一个新的 WPF 用户控件 请注意 有些人使用 app xaml 文件来设置内部应用程序级别资源 我的解决方案由 WinForm 和 WPF UserControl 组成 我在某处没有看到任何 app xaml 文
  • PHP 将小数转换为分数并返回?

    我希望用户能够输入如下分数 1 2 2 1 4 3 并将其转换成相应的十进制 保存在MySQL中 这样我就可以通过它进行排序并对其进行其他比较 但在向用户显示时我需要能够将小数转换回分数 所以基本上我需要一个将分数字符串转换为十进制的函数