You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery需求改造:输入值小于0.05时返回1/2

解决方法

问题出在你用toFixed(1)把小于0.05的数值转成了0.0,后续的分数转换逻辑会把这个值当成整数0处理,导致没有返回分数部分。要实现“所有小于0.05的输入值返回1/2”的需求,我们可以在处理前先判断输入值的大小,直接返回指定结果,再走原来的逻辑。

这里是修改后的代码:

修改后的JavaScript代码

function simpler(whole, x, y) {
  if (x == 0) {
    return whole;
  } else if (x == 1 && y == 10) {
    return whole + '<sup>' + 1 + '</sup>/<sub>' + 10 + '</sub>'
  } else if (x == 2 && y == 10) {
    return whole + '<sup>' + 1 + '</sup>/<sub>' + 5 + '</sub>'
  } else if (x == 3 && y == 10) {
    return whole + '<sup>' + 3 + '</sup>/<sub>' + 10 + '</sub>'
  } else if (x == 4 && y == 10) {
    return whole + '<sup>' + 2 + '</sup>/<sub>' + 5 + '</sub>'
  } else if (x == 5 && y == 10) {
    return whole + '<sup>' + 1 + '</sup>/<sub>' + 2 + '</sub>'
  } else if (x == 6 && y == 10) {
    return whole + '<sup>' + 3 + '</sup>/<sub>' + 5 + '</sub>'
  } else if (x == 7 && y == 10) {
    return whole + '<sup>' + 7 + '</sup>/<sub>' + 10 + '</sub>'
  } else if (x == 8 && y == 10) {
    return whole + '<sup>' + 4 + '</sup>/<sub>' + 5 + '</sub>'
  } else if (x == 9 && y == 10) {
    return whole + '<sup>' + 9 + '</sup>/<sub>' + 10 + '</sub>'
  } else {
    return whole + '<sup>' + x + '</sup>/<sub>' + y + '</sub>';
  }
}

function Fraction() {}

Fraction.prototype.convert = function(x, improper) {
  improper = improper || false;
  var abs = Math.abs(x);
  this.sign = x / abs;
  x = abs;
  var stack = 0;
  this.whole = !improper ? Math.floor(x) : 0;
  var fractional = !improper ? x - this.whole : abs;

  function recurs(x) {
    stack++;
    var intgr = Math.floor(x);
    var dec = (x - intgr);
    if (dec < 0.0019 || stack > 20) return [intgr, 1];
    var num = recurs(1 / dec);
    return [intgr * num[0] + num[1], num[0]]
  }

  var t = recurs(fractional);
  this.numerator = t[0];
  this.denominator = t[1];
}

Fraction.prototype.toString = function() {
  var l = this.sign.toString().length;
  var sign = l === 2 ? '-' : '';
  var whole = this.whole !== 0 ? this.sign * this.whole + ' ' : sign;
  return simpler(whole, this.numerator, this.denominator);
}

function f() {
  var text = $('#text').val();
  var value = parseFloat(text);
  
  // 新增判断:如果数值小于0.05,直接返回1/2的格式
  if (value < 0.05) {
    $('#result').html('<sup>1</sup>/<sub>2</sub>');
    return;
  }
  
  var roundUp = 0.4;
  var digit = value.toFixed(1);
  var frac = new Fraction()
  frac.convert(digit, false)
  $('#result').html(frac.toString());
}

$('#text').on('change', function() {
  f();
});

f();

HTML代码(无需修改)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="text" value="0.04" />
<div id="result"></div>

关键修改点:

  • 在f()函数中,先把输入值转换成浮点数value = parseFloat(text),直接判断value < 0.05
  • 如果满足条件,直接给#result设置<sup>1</sup>/<sub>2</sub>,并提前返回,跳过后续的分数转换逻辑
  • 其他逻辑保持不变,这样既满足了你的需求,又保留原有代码的功能

内容的提问来源于stack exchange,提问作者Ashonko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:21:38