AI给的代码不是拿来就能用的,程序猿至少暂时不会失业

本文描述了作者在使用AI生成的代码过程中,从初始版本的不完善,经过多次迭代,最终实现人民币金额的大写转换,强调了准确的提示和训练对于AI性能提升的重要性。
摘要由CSDN通过智能技术生成

AI给的代码不是拿来就能用的,准确的提示和训练必不可少。。。

前段时间需要在系统中做一个人民币自动转大写的功能,同事给的代码有些不对劲,于是我找来了AI帮忙。。。(其实之前我给他参考的JS也是另一个AI给的,我没测过)

版本1

AI提供的第1版代码结果是这样的,连位数都数不清楚,我告诉了它,然后它很虚心的承认了错误

function convertCurrencyToChinese(amount) {
  // 检查输入是否合法
  if(isNaN(amount) || amount < 0 || amount.toString().indexOf('.') > 12){
    return "无效输入";
  }
  
  //汉字的数字
  var CN_NUMBER = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']; 
  //货币单位
  var CN_INTEGER = ['圆','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','兆','拾','佰','仟'];

  var integerNum = Math.floor(amount*100);
  var result = '';

  for(var i = 0;i < CN_INTEGER.length && integerNum > 0; i++){
    var intDiv = parseInt(integerNum % 10);
    result = CN_NUMBER[intDiv] + CN_INTEGER[i] + result;
    integerNum = parseInt(integerNum/10);
  }

  result = result.replace(/零[拾佰仟]/g, '零').replace(/圆零圆/, '圆').replace(/零兆|零亿|零万|零圆/, '圆').replace(/亿万/, '亿').replace(/零+/g, '零').replace(/零圆/, '圆');
  return result === '' ? "零圆" : result;
}

// 当输入框的值发生变化时,调用转换函数并显示在页面上
var inputElement = document.getElementById('yourInputId');
var outputElement = document.getElementById('outputId');

inputElement.addEventListener('input', function() {
  var amount = parseFloat(this.value);
  var result = convertCurrencyToChinese(amount);
  outputElement.textContent = result;
});

在这里插入图片描述

版本2

勇于快速改正的AI秒给了版本2,然而识别了角和分,但还是不识位数
在这里插入图片描述

版本3

第3版,没有大问题,但转换了一个零角X分出来。。。。
在这里插入图片描述

版本4

零角。。。 死不悔改还非常自信,看来提示语给的不够精准
在这里插入图片描述

版本5

这次AI终于改对了,给它反馈一个结果……
在这里插入图片描述
在这里插入图片描述

第5版终极代码

function convertCurrencyToChinese(amount) {
  // 检查输入是否合法
  if(isNaN(amount) || amount < 0 || amount.toString().indexOf('.')>15){
    return "无效输入";
  }
  
  //汉字的数字
  var CN_NUMBER = ['零','壹','贰','叁','肆','伍','陆','柒','捌','玖']; 
  //货币单位
  var CN_INTEGER = ['圆','拾','佰','仟','万','拾','佰','仟','亿','拾','佰','仟','兆','拾','佰','仟'];
  // 货币单位角、分
  var CN_DECIMAL = ['角','分'];
  
  var integerNum = Math.floor(amount);
  var decimalNum = Math.round((amount - integerNum) * 100);
  var result = '';

  // 处理整数部分
  for(var i = 0; i < CN_INTEGER.length && integerNum > 0; i++){
    var intDiv = parseInt(integerNum % 10);
    result = CN_NUMBER[intDiv] + CN_INTEGER[i] + result;
    integerNum = parseInt(integerNum/10);
  }

  // 如果小数部分为0,则添加“整”
  if (decimalNum === 0) {
    result += '整';
  } else {
    // 处理角和分
    result += CN_NUMBER[Math.floor(decimalNum / 10)] + CN_DECIMAL[0];
    if (decimalNum % 10 !== 0) {
      result += CN_NUMBER[decimalNum % 10] + CN_DECIMAL[1];
    }
  }

  result = result.replace(/零[拾佰仟]/g, '零').replace(/零[万亿兆]/g, '零').replace(/零+/g, '零').replace(/零圆/g, '圆').replace(/零(角|分)/g, '');
  return result.replace(/零圆/g, '圆');
}

var amount = 987654321.09;
var result = convertCurrencyToChinese(amount);
console.log(result);  // 输出:玖亿捌仟柒佰陆拾伍万肆仟叁佰贰拾壹圆玖分


OVER

有兴趣的朋友可以参考下。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值