|
|
|
ติดปัญหาเรื่อง การใส่จุดทศนิยมของตัวเลข เวลาแสดงผล ใน PHP [ช่วยหน่อยครับ] |
|
|
|
|
|
|
|
ข้อ 1. คุณจะนับตัวแรกแล้วจุดหรือนับทศนิยมแค่ 2 แล้วจุด?
กรณีแรก ถ้าเลขเป็น 12345 จะเอาเป็น 1.2345 หรือ 123.45
ข้อ 2. ให้ไปลองหา google คำว่า jquery input mask มีให้เลือกเยอะมาก
|
|
|
|
|
Date :
2015-06-22 07:30:56 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ข้อที่ 1 ตอบ คือใช้ คำสั่ง number_format ่ครับ
|
|
|
|
|
Date :
2015-06-22 07:54:59 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบพี่ mr.v ในข้อที่ 1
ถ้าเลขเป็น ถ้าเลขเป็น 12345 จะเอาเป็น 123.45 ครับ
ตอบพี่ deawx ในข้อที่ 1
ผมใช้คำสั่ง number_format แล้วครับ แต่ผลลัพธ์ยังไม่ออกมาอย่างที่ต้องการ
|
|
|
|
|
Date :
2015-06-22 11:28:02 |
By :
ifoam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
$number = '105';
echo 'number: '.$number.'<br>';
$number_char_length = mb_strlen($number);
echo 'total char: ';
var_dump($number_char_length);
echo '<br>';
$number_sub_last_two = mb_substr($number, -2);
echo 'substr last two: ';
var_dump($number_sub_last_two);
echo '<br>';
$number_sub_before_last_two = mb_substr($number, 0, ($number_char_length-2));
echo 'number before substr last two: ';
var_dump($number_sub_before_last_two);
echo '<br>';
$number_custom_decimal_format = $number_sub_before_last_two.'.'.$number_sub_last_two;
echo 'custom decimal format: ';
var_dump($number_custom_decimal_format);
echo '<br>';
โค้ดเบื้องต้นนะครับ ลองดู
|
|
|
|
|
Date :
2015-06-22 12:05:19 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
function intToDecimal($number = '', $decimal_place = 2, $force_float_val = true)
{
// force number to be integer.
$number = intval($number);
// decimal must be integer and negative.
$decimal_place = intval(-($decimal_place));
$num_length = strlen($number);
$num_last_two = substr($number, $decimal_place);
$num_first_path = substr($number, 0, ($num_length-abs($decimal_place)));
// make number as decimal (xxx.xx)
$number_decimal = $num_first_path . '.' . $num_last_two;
if ($force_float_val === true) {
floatval($number_decimal);
}
// clear unwant value
unset($num_first_path, $num_last_two, $num_length);
return $number_decimal;
}// intToDecimal
echo '<h4>Test number to decimal</h4>';
echo intToDecimal('1234567890').'<br>';// 12345678.90
echo intToDecimal('90').'<br>';// .90
echo intToDecimal('3').'<br>';// .3
echo intToDecimal('-43289').'<br>';// -432.89
มาเป็นฟังก์ชั่นใช้ง่าย
|
|
|
|
|
Date :
2015-06-22 12:16:57 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองศึกษาเป็นตัวอย่างนะครับ
Code (JavaScript)
<script src="jquery-2.1.1.min.js"></script>
<input type=text id='test' data-val='' ><br>
<textarea id='text' rows="20"></textarea>
<script>
Number.prototype.format = function(n, x) {
var re = '\\d(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\.' : '$') + ')';
return this.toFixed(Math.max(0, ~~n)).replace(new RegExp(re, 'g'), '$&,');
};
$(document).ready(function(e){
$('#test').keydown(function(e){
var z = parseInt('0'+$('#test').data('val'));
var y = e.which; // or e.keyCode;
if(y>95 && y<106) y += 48 - 96;
$('#text').val( $('#text').val() +y + '==' + x +"\n" );
switch( y ){
case 8: //backspace
z = Math.floor(z / 10);
break;
default:
var x = String.fromCharCode( y );
if(x<'0' || x>'9'){ // เฉพาะตัวเลข
$('#text').val( $('#text').val() +"clear\n" );
}else {
z = (z * 10) + parseInt(x);
}
}
$('#test').val( (z / 100).format(2) ).data('val', z);
$('#text').val( $('#text').val() + z + "\n" );
return false;
});
});
</script>
|
|
|
|
|
Date :
2015-06-22 12:17:12 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ล่าสุดการแสดงผลโดยใช้ ฟังก์ชั่น ที่พี่ mr.v ให้มา ได้ผลเรียบร้อยแล้วครับ
ส่วนของพี่ Chaidhanan คือการ โชว์ใน textbox ใช่ใหมครับ เดี๋ยวผมลองแกะ งมๆทำดู ติดขัดตรงใหนจะมาตั้งกระทู้ใหม่นะครับ
ขอบคุณพี่ๆทุกคนครับ
|
|
|
|
|
Date :
2015-06-22 15:08:23 |
By :
ifoam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|