format number 4 หลัก แบบที่ปัดเศษเมื่อทศนิยมหลักที่ 5 เท่ากับ 95

ฟังก์ชั่นนี้ปัดเศษตามข้อกำหนดของตลาดหลักทรัพย์ครับ คือปัดขึ้นเมื่อทดศนิยมหลักที่ 5 เกิน 0.000095 ให้ผลลัพท์เป็นทศนิยม 4 หลัก

<script type="text/javascript">
function format_number( number )
{
  if ( isNaN( number ) || number == '' )
  {
    return 0;
  };

  var snum = new String( number );
  var sec = snum.split( '.' );
  var whole = parseFloat( sec[0] );
  var result = '';

  if( sec.length > 1 ) //มีทศนิยม
  {
    var dec = new String( sec[1] ); //จำนวนหลังทศนิยม
    dec1 = String( parseFloat( dec ) / Math.pow( 10 , ( dec.length - 4 ) ) ); //ตัดตัวเลข 4 หลัก
    dec2 = String( Math.floor( parseFloat( dec1 ) ) / Math.pow( 10 , 4 ) ); //เฉพาะทศนิยมไม่เกิน 4 หลัก
    

    if( dec1.indexOf( '.' ) == -1 ) //มีทศนิยมน้อยกว่า 4 หลัก
    {
      var d = dec2.split( '.' )[1];
    }
    else //ทศนิยมมากกว่า 4 หลัก ตรวจสอบหลักที่ 5 ว่าเกิน 94 หรือไม่ เพื่อปัดเศษ
    {
      var sec2 = dec1.split( '.' );
      var dec3 = parseInt( sec2[1] / Math.pow( 10 , ( sec2[1].length - 2 ) ) ); //ตัดเอามาแค่ 2 หลัก
      if ( dec3 > 94 ) //เกิน 94
      {
        if ( sec2[0].length == 4 ) //ไม่มี 0 นำหน้า
        {
          var d = parseInt( sec2[0] ) + 1;
        }
        else // มี 0 นำหน้า ทศนิยม เช่น .001
        {
          d = parseFloat( sec2[0] ) / 10000;
          var d2 = String( d + .0001 );
          var ds = d2.split( '.' );
          d = ds[1];
        };
      }
      else //ไม่เกิน 94
      {
        var d = dec2.split( '.' )[1];
      };
    };
    //เติม 0 ให้ครบ 4 หลัก
    for( i = d.length ; i < 4 ; i++ )
    {
      d = d + '0';
    };
    result = sec[0] + '.' + d;
  }
  else //ไม่มีทศนิยมมา เติมทศนิยม 4 หลัก .0000
  {
    var dot;
    var dec = new String( whole );
    //เติม จุด ทศนิยม
    dec += '.';
    dot = dec.indexOf( '.' );
    //เติม 0 ให้ครบหลัก
    while( dec.length <= dot + 4 )
    {
      dec += '0';
    };
    result = dec;
  };
  return result;
}
</script>

ตัวอย่างการใช้งาน

<script type="text/javascript">
document.write( '0.009=' + format_number( 0.009 ) + '<br />' ); //0.009=0.0090
document.write( '0.0095=' + format_number( 0.0095 ) + '<br />' ); //0.0095=0.0095
document.write( '2489=' + format_number( 2489 ) + '<br />' ); //2489=2489.0000
document.write( '2489.25=' + format_number( 2489.25 ) + '<br />' ); //2489.25=2489.2500
document.write( '123.25689599223=' + format_number( 123.25689599223 ) + '<br />' ); //123.25689599223=123.2569
document.write( '123.0010941235478=' + format_number( 123.0010941235478 ) + '<br />' ); //123.0010941235478=123.0010
document.write( '123.0010951235478=' + format_number( 123.0010951235478 ) + '<br />' ); //123.0010951235478=123.0011
document.write( '123.0001951235478=' + format_number( 123.0001951235478 ) + '<br />' ); //123.0001951235478=123.0002
</script>
ผู้เขียน goragod โพสต์เมื่อ 02 เม.ย. 2551 เปิดดู 8,824 ป้ายกำกับ Javascript
^