在javascript中将小数转换为六十进制(以六十为基数)

2024-01-16

将十进制数(以十为基数)转换为以 0-9、A-Z 和 a-x 作为数字的字符串表示的六十进制(以六十为基数)的最佳方法是什么。

我计划用 javascript 对其进行编码,但感谢您的帮助。

使用示例:

>>decToSex(60);
"10"
>>decToSex(123);
"23"
>>decToSex(1000000);
"4bke"
>>decToSex(1234567.89);
"5gu7.rO"

我使用的最终代码基于 Paolo 的答案:

var decToSex = function(){
    var decToSexMap = ['0','1','2','3','4','5','6','7','8','9',
            'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
            'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x'];

    return function(number){

        var negative = '';
        if (number < 0){
            var negative = '-';
        }

        number = number.toString().split('.');
        var integer = Math.abs(number[0]);
        var fraction = number[1];
        var result = '';

        do {
            result = decToSexMap[integer % 60] + result;
            integer = parseInt(integer / 60);
        } while (integer > 0);

        if (fraction){
            var decimalPlaces = fraction.toString().length;
            result += '.';
            fraction = parseFloat('.' + fraction);

            var x = 0;
            do {
                x++;
                var res = (fraction * 60).toString().split('.');
                result = result + decToSexMap[res[0]];

                if (res[1]) {
                    fraction = parseFloat('.' + res[1]);
                }
                else {
                    break;
                }
            } while (x < decimalPlaces);
        }
        return negative + result;
    }
}();

这适用于提供的测试数据,但您可能想对其进行更多测试:

<script>
var convert = new Array(0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','I','J','K',
                       'L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a',
                       'b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q',
                       'r','s','t','u','v','w','x');

function decToSex(num) {
    var extract = num.toString().split('.');
    num = extract[0];
    var pieces = new Array();
    do {
        pieces.push(convert[num % 60]);
        num = parseInt(num/60);
    } while (num > 0);
    pieces = pieces.reverse();
    var rem = extract[1];
    if(rem) {
        rem = parseFloat('.' + rem);
        var x = 0;
        var dec = new Array();
        do {
            x++;
            var res = (rem * 60).toString().split('.');
            dec.push(convert[res[0]]);
            if(res[1]) {
                rem = parseFloat('.' + res[1]);
            } else {
                break;
            }
        } while (x < 3); // work up to 3 decimal places, change for more.
    }
    var myResult = pieces.join('');
    if(dec) {
        myResult += '.' + dec.join('');
    }
    return myResult;
}

alert(decToSex(60));
alert(decToSex(123));
alert(decToSex(1000000));
alert(decToSex(1234567.89));
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在javascript中将小数转换为六十进制(以六十为基数) 的相关文章

随机推荐

  • Postgresql - 在 sql 脚本中将参数传递给 COPY

    我可以使用 v v1 foo语法对于我的 sql 脚本中的查询来说很好 但我不知道如何在复制语句中使用该参数 我想执行如下脚本 psql d my db f exports sql v v1 Users username test json
  • 如何在 GWT 中使用 XMLHttpRequest?

    XMLHttpRequest 是 GWT 客户端 HTTP 调用的替代方案 允许控制请求 响应的各个方面 但如何使用呢 javadoc地址 http www gwtproject org javadoc latest com google
  • Django url 参数和反向 URL

    我有一个看起来像这样的视图 def selectCity request the city request session ciudad the city city request session ciudad return HttpRes
  • OAuth 自定义提供程序 C#

    我需要创建一个自己的 OAUTH 提供商 以验证第三方应用程序请求 我不想使用 Google Twitter LinkedIn Microsoft 提供商 我必须创建自己的提供程序来验证请求并向客户端返回访问令牌 但网上的所有帮助都与外部提
  • 授权属性的 MVC5 声明版本

    我正在使用 MVC5 和新的 OWIN 身份验证中间件尝试 VS2013 RC 中的一些新功能 所以 我习惯使用 Authorize 属性来按角色限制操作 但我正在尝试使用基于声明 活动的授权 但我找不到它的等效属性 我是否缺少一个明显的东
  • XMPP Bosh 与 SignalR

    XMPP相对于SignalR有更多优势吗 它们都使用 http 长轮询机制 我无法决定是否应该使用 XMPP 作为我的聊天应用程序 还是应该使用 SignalR 并将所有内容保留在我的 IIS 服务器上 SignalR 使用多种传输方式 请
  • 如何在源代码中强制执行单线程构建

    背景 我为一些非常专业的数据处理创建了许多小型实用程序 通常 我是唯一的用户 我什至没有考虑多线程编程 因为运行时性能对于我的用例来说已经足够了 关键资源是我的编程时间 所以我想避免多线程编程所需的任何额外工作 然而 当我将来重用我的代码时
  • android - “您的设备与此版本不兼容”

    我在 Play 商店中放置了一个应用程序 我运行 4 1 Nexus 7 的朋友在尝试安装我的应用程序时收到以下消息 您的设备与此版本不兼容 为什么这个来了 请任何人帮助我 Manifeast file lt xml version 1 0
  • Android 中 Google 地图标记周围的脉冲环动画

    我想在 Android google mapFragment 中的蓝点当前用户位置添加脉冲环动画 如 Uber 有人能帮我解决这件事吗 我找到了向标记添加脉动动画的解决方案 这是地图部分 这里变量 map 表示您的地图 private Ci
  • 如何优化以下for循环代码?

    我有一个非常大的数据集 我正在使用以下代码 计算花费了太多时间 我想减少迭代次数 如何提高代码的性能 import numpy as np Z np asarray 1 2 3 4 5 6 7 8 R np asarray 1 2 3 4
  • Firestore Timestamp.fromDate 不是 UTC

    有人知道如何在 Firestore 中保留 UTC 时间戳吗 In my Angular应用程序 如果我将今天的日期转换为如下所示的时间戳 我最终会得到一个UTC 2 瑞士现在是夏令时 Firestore 数据库中的日期 import fi
  • GAE NDB 安装已部署

    我的 Google App Engine 应用程序使用数据存储区 NDB 所以我要导入 from google appengine ext import ndb 但是当我部署并转到我的应用程序时出现错误 ModuleNotFoundErro
  • 剧作家未收到事件

    我对编剧有意见page waitForEvent https playwright dev docs api class page page wait for event 我希望我的测试在单击链接后导航到不同页面后等待我们的应用程序触发的特
  • 将 openCV C++ 视频流式传输到浏览器

    我正在尝试使用 C 中的 openCV 捕获内置网络摄像头 并进行一些处理 到目前为止 这是有效的 现在我想将网络摄像头流式传输到浏览器 我怎样才能实现这一目标 Should I create a WebSocket Or use a UP
  • 如何将Toast的动态位置设置到视图?

    首先这不是完整的代码 Override public void onCheckedChanged CompoundButton buttonView boolean isChecked Toast toast Toast makeText
  • 如何调试 HTTP 502 错误?

    我有一个 Python Tornado 服务器位于 nginx 前端后面 我偶尔 但不是每次 都会收到 502 错误 我查看 nginx 访问日志 看到以下内容 127 0 0 1 02 Jun 2010 18 04 02 0400 POS
  • python中岭回归的p值

    我正在使用岭回归 ridgeCV 我已经从以下位置导入了它 从 sklearn linear model 导入 LinearRegression RidgeCV LarsCV Ridge Lasso LassoCV 如何提取 p 值 我检查
  • 我们可以从适配器调用startActivityForResult吗?

    是否可以有方法onActivityResume within adapter 称呼startActivityForResult 是的 只需在适配器的构造函数中将活动的上下文传递给适配器即可 此处存储为 mContext 在getView中
  • 仅在专门调用时运行 gradle 任务

    我有一个build gradle创建 java 文件WAR文件 该文件在 Docker 多阶段构建的一个阶段中使用 以生成我在生产 暂存等中使用的 Docker 映像 配置文件 机密位于映像之外 但在开发中 虽然大多数时候我使用普通构建来生
  • 在javascript中将小数转换为六十进制(以六十为基数)

    将十进制数 以十为基数 转换为以 0 9 A Z 和 a x 作为数字的字符串表示的六十进制 以六十为基数 的最佳方法是什么 我计划用 javascript 对其进行编码 但感谢您的帮助 使用示例 gt gt decToSex 60 10