小鸡眯眼 发表于 2024-8-29 14:12

在线人民币大小写转换工具html代码

本帖最后由 小鸡眯眼 于 2024-8-30 10:21 编辑

该工具旨在帮助用户方便地将人民币金额从小写转换为大写,只需输入金额,点击转换按钮,即可快速获得准确的大写表示。工具界面简洁友好,支持输入各种格式的大写金额,如“1356.78元”。经常报账的小伙伴可以用到,减少手动转换的错误。

前面的有错误,从新修改下 ,最大支持九位数,我试了下没啥问题了,大家可以测试下。
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>人民币数字转大写</title>
    <style>
      body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f5f5f5;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
      }
      .container {
            background-color: #fff;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
            width: 90%;
            max-width: 400px;
            text-align: center;
      }
      input, button {
            padding: 10px;
            margin-top: 10px;
            width: 100%;
            border: 1px solid #ccc;
            border-radius: 4px;
            box-sizing: border-box; /* 使padding和border包含在width内 */
      }
      button {
            background-color: #28a745;
            color: white;
            border: none;
            cursor: pointer;
      }
      button:hover {
            background-color: #218838;
      }
      #result {
            margin-top: 20px;
            font-size: 1.2em;
            font-weight: bold;
      }
    </style>
</head>
<body>
    <div class="container">
      <h1>人民币数字转大写</h1>
      <input type="text" id="numberInput" placeholder="请输入十亿以内的数字" maxlength="10" />
      <button>转换</button>
      <div id="result"></div>
    </div>

    <script>
      const bigNum = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
      const bigUnit = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿'];

      function convertToCapital() {
            let input = document.getElementById("numberInput").value.trim();
            let result = "";

            // 分离整数部分和小数部分
            let = input.split(".");
            integerPart = integerPart.replace(/,/g, ""); // 去掉逗号
            decimalPart = decimalPart ? decimalPart.slice(0, 2) : ""; // 只取前两位

            if (parseInt(integerPart) >= 1000000000) {
                result = "超出范围,最大支持十亿。";
            } else {
                // 转换整数部分
                if (parseInt(integerPart) === 0) {
                  result += "零元";
                } else {
                  let zeroCount = 0;
                  let unitIndex = integerPart.length - 1;

                  for (let i = 0; i < integerPart.length; i++) {
                        let digit = integerPart.charAt(i);
                        let pos = unitIndex - i;

                        if (digit !== '0') {
                            if (zeroCount > 0) {
                              result += bigNum; // 添加零
                            }
                            result += bigNum; // 添加数字
                            if (pos % 4 !== 0) {
                              result += bigUnit; // 添加单位
                            }
                            zeroCount = 0;
                        } else {
                            zeroCount++;
                        }

                        // 添加万或亿
                        if (pos === 4) {
                            result += bigUnit; // 添加万
                        } else if (pos === 8) {
                            result += bigUnit; // 添加亿
                        }
                  }
                  result += "元"; // 添加元
                }

                // 转换小数部分
                if (decimalPart) {
                  if (decimalPart.length > 0) {
                        result += bigNum + "角";
                  }
                  if (decimalPart.length > 1) {
                        result += bigNum + "分";
                  }
                } else {
                  result += "整"; // 没有小数部分时添加整
                }
            }

            document.getElementById("result").innerText = result;
      }
    </script>
</body>
</html>
测试的地址这个:http://diuta.com/app/rmb.html

liujkk 发表于 2024-8-29 15:59

其实不用那么麻烦
输入法中打    v+数字就可以了 选b选项
1234567890 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾

lengbingling 发表于 2024-8-30 09:06

你发的代码与网址的代码还是有区别的.

本帖最后由 lengbingling 于 2024-8-30 09:08 编辑

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>人民币数字转大写</title>
    <style>
      body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f5f5f5;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
      }
      .container {
            background-color: #fff;
            padding: 20px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
            width: 90%;
            max-width: 400px;
            text-align: center;
      }
      input, button {
            padding: 10px;
            margin-top: 10px;
            width: 100%;
            border: 1px solid #ccc;
            border-radius: 4px;
            box-sizing: border-box; /* 使padding和border包含在width内 */
      }
      button {
            background-color: #28a745;
            color: white;
            border: none;
            cursor: pointer;
      }
      button:hover {
            background-color: #218838;
      }
      #result {
            margin-top: 20px;
            font-size: 1.2em;
            font-weight: bold;
      }
    </style>
</head>
<body>
    <div class="container">
      <h1>人民币数字转大写</h1>
      <input type="text" id="numberInput" placeholder="请输入十亿以内的数字" maxlength="10" />
      <button>转换</button>
      <div id="result"></div>
    </div>

    <script>
      const bigNum = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
      const bigUnit = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿'];

      function convertToCapital() {
            let input = document.getElementById("numberInput").value.trim();
            let result = "";

            // 分离整数部分和小数部分
            let = input.split(".");
            integerPart = integerPart.replace(/,/g, ""); // 去掉逗号
            decimalPart = decimalPart ? decimalPart.slice(0, 2) : ""; // 只取前两位

            if (parseInt(integerPart) >= 1000000000) {
                result = "超出范围,最大支持十亿。";
            } else {
                // 转换整数部分
                if (parseInt(integerPart) === 0) {
                  result += "零元";
                } else {
                  let zeroCount = 0;
                  let unitIndex = integerPart.length - 1;

                  for (let i = 0; i < integerPart.length; i++) {
                        let digit = integerPart.charAt(i);
                        let pos = unitIndex - i;

                        if (digit !== '0') {
                            if (zeroCount > 0) {
                              result += bigNum; // 添加零
                            }
                            result += bigNum; // 添加数字
                            if (pos % 4 !== 0) {
                              result += bigUnit; // 添加单位
                            }
                            zeroCount = 0;
                        } else {
                            zeroCount++;
                        }

                        // 添加万或亿
                        if (pos === 4) {
                            result += bigUnit; // 添加万
                        } else if (pos === 8) {
                            result += bigUnit; // 添加亿
                        }
                  }
                  result += "元"; // 添加元
                }

                // 转换小数部分
                if (decimalPart) {
                  if (decimalPart.length > 0) {
                        result += bigNum + "角";
                  }
                  if (decimalPart.length > 1) {
                        result += bigNum + "分";
                  }
                } else {
                  result += "整"; // 没有小数部分时添加整
                }
            }

            document.getElementById("result").innerText = result;
      }
    </script>
</body>
</html>

milu1123 发表于 2024-8-29 15:58

不够严谨,,,,没 个十百千万亿

宁致远 发表于 2024-8-29 16:00

没有百千万 有啥用???

小鸡眯眼 发表于 2024-8-29 16:07

milu1123 发表于 2024-8-29 15:58
不够严谨,,,,没 个十百千万亿

我一般用不到那么大的{:1_907:}

度娘灬魂手 发表于 2024-8-29 16:17

1356 应该是 壹仟叁佰伍陆

lengbingling 发表于 2024-8-29 20:29

我复制代码制作成的html文件,用浏览器打开,输入数字转换后没结果是怎么回事?

lengbingling 发表于 2024-8-30 08:32

测试地址的网页源代码能提供一下下载吗?

小鸡眯眼 发表于 2024-8-30 08:33

lengbingling 发表于 2024-8-29 20:29
我复制代码制作成的html文件,用浏览器打开,输入数字转换后没结果是怎么回事?

应该没问题啊,我放的演示链接就是一样的代码了

lengbingling 发表于 2024-8-30 08:35

小鸡眯眼 发表于 2024-8-30 08:33
应该没问题啊,我放的演示链接就是一样的代码了

测试地址的网页源代码用浏览器打开没问题,源代码能提供一下下载吗?
页: [1] 2 3
查看完整版本: 在线人民币大小写转换工具html代码