V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
lbfeng
V2EX  ›  JavaScript

小数部分为 0 时不显示

  •  
  •   lbfeng · 2016-07-07 01:46:00 +08:00 · 3968 次点击
    这是一个创建于 3069 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://jsfiddle.net/2pvt4dwm/

    如何才能在小数为 0 时显示.0 ,其他情况显示正常小数。

    16 条回复    2016-07-07 12:12:11 +08:00
    oglop
        1
    oglop  
       2016-07-07 02:23:06 +08:00
    float_number.toFixed(1)
    lbfeng
        2
    lbfeng  
    OP
       2016-07-07 06:46:16 +08:00
    @oglop 明显不行啊。 2.13 就只能显示 2.1
    egen
        3
    egen  
       2016-07-07 07:01:46 +08:00 via iPhone
    .toFixed(0) === float_number ? :
    ETiV
        4
    ETiV  
       2016-07-07 07:17:09 +08:00
    https://jsfiddle.net/2pvt4dwm/5/

    感觉这是一道思考题,就看考虑的全面不全面…
    shyling
        5
    shyling  
       2016-07-07 07:53:02 +08:00 via Android
    判断一下咯 2.13 - (2.13|0) == 0 ,然后截取
    oglop
        6
    oglop  
       2016-07-07 08:02:12 +08:00
    float_number.toFixed( float_number.toString().split('.')[1].length) )
    66beta
        7
    66beta  
       2016-07-07 08:04:34 +08:00
    目前能想到的就是转成字符串 +''
    正则匹配几个 0 ,有几个去掉几个 toFixed(*)
    返回数字
    Cabana
        8
    Cabana  
       2016-07-07 08:04:37 +08:00 via Android
    int(str(float_num).split('.')[1]) == 0?int(str(float_num).split('.')[0]):float_num
    xqin
        9
    xqin  
       2016-07-07 08:42:17 +08:00
    @oglop 依然是错的.
    首先这是一个数字, 然后在赋值的时候, 虽然写的是 2.0 但这个变量的值是 2 没有 .0
    所以你 toString().split('.')[1] 得到的是 undefined, 然后在 undefined 的基础上取 length 是会报错的.

    ```
    float_number = 2.0
    float_number.toFixed( float_number.toString().split('.')[1].length)//Cannot read property 'length' of undefined
    ```

    另外你发的代码中多了一个 右括号.


    https://jsfiddle.net/vb5wvgs8/1/
    Yokira
        10
    Yokira  
       2016-07-07 09:08:11 +08:00
    var num = 3;
    num = num == num.toFixed() ? `${num}.0` : num;
    just4test
        11
    just4test  
       2016-07-07 09:33:05 +08:00   ❤️ 1
    return num == int(num) ? num.toFixed(1) : num
    lbfeng
        12
    lbfeng  
    OP
       2016-07-07 10:24:03 +08:00
    @just4test

    function int(n) { return parseInt(n) === n };
    var float_number = 2.18;
    $('#display').html(int(float_number) ? float_number.toFixed(1) : float_number);
    eecjimmy
        13
    eecjimmy  
       2016-07-07 12:04:57 +08:00
    result = subject.replace(/\.0*$/mg, "");
    oglop
        14
    oglop  
       2016-07-07 12:09:52 +08:00
    oglop
        15
    oglop  
       2016-07-07 12:11:50 +08:00
    @lbfeng 老外们似乎比较热心
    eecjimmy
        16
    eecjimmy  
       2016-07-07 12:12:11 +08:00
    需求没看清楚: result = subject.replace(/\.0{2,}$/mg, ".0");
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2662 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 09:56 · PVG 17:56 · LAX 01:56 · JFK 04:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.