เรื่องการปัดเศษ เราสามารถกำหนดได้หรือไม่ว่า ให้มากกว่า 7 ถึงจะปัดขึ้น และน้อยกว่า 7 ให้ปัดลง
ทำฟังก์ชั่น ปัดเองครับ
split('.'); เช็ค array index ที่ 1 ถ้ามากกว่า 7 ก็ ให้
array index ที่ 0 เพิ่มขึ้น 1
Date :
2013-11-12 17:18:51
By :
anotherdie
ทำยังไงคะพี่ รบกวนขอ code ตัวอย่างซัก บรรทัดสองบรรทัด กับเด็กตาดำ ๆ นะคะ T_T
Date :
2013-11-12 17:23:25
By :
minted
ขอ Code - รบกสน Search กระทู้เก่าครับ จำได้ว่าเคยตอบ ๆ ไปมีเยอะ
Date :
2013-11-12 17:42:27
By :
apisitp
หาไปแล้วค่ะ มีแต่ปัดเศษ ขึ้น ก้อ ขึ้นเลย ลง ลง เลย ไม่มีแบบกำหนดค่าได้ว่าจะให้ปัด ตอนที่ มากกว่า ค่าที่กำหนดปัดขึ้น หรือน้อยกว่ากำหนด ปัดลง
Date :
2013-11-12 17:53:35
By :
minted
--------------- $a = ตัวตั้ง $b = ตัวหาร ---------------
1. $a ใช้ floor หาีรแบบปัดเศษลง เก็บไว้ในตัวแปร new_a
2. ใช้ $a%$b เพื่อหารเอาเศษ
3. ถ้า $b * 0.7 น้อยกว่าหรือเท่ากับกว่า เศษที่มี ให้ $new_a +1 **บทนิยามข้างล่าง
เศษเป็น 0.70 พอดีให้ปัด ถ้าไม่อยากให้ปัดเอาเท่ากับออก
Soln
1. ตัวตั้ง (A) = 100
2. ตัวหาร(B) = 51
<?
$a = 100; //ตัวตัวตั้ง
$b = 51; //ตัวหาร
$new_a=floor($a/$b); //หารปัดลง
$sed_a=$a%$b; //หารเอาเศษ
if (($b*0.7)<=$sed_a) { $new_a++; } // ถ้า 70% ของ B น้อยกว่าเศษที่มี ให้ ผลลัพท์+1
echo $new_a; //แสดงผลลัพท์
?>
บทนิยาม
ฺ1. B*0.7 เท่ากับ 70%ของB หรือ 0.70ของB
2. เศษ(จำนวนเต็ม)ที่ได้จากการเอา A ตั้ง B หาร นั้นคือส่วนที่เกินมาของ B เมื่อกระทำกับตัวตั้ง
- จะสังเกตุได้ว่าจำนวนนี้น้อยกว่าและไม่เท่ากับ B ตามหลักจการของจำนวนเต็ม
3. เมื่อเอา70%ของตัวหาร(B) มาเปรียบเทียบกับเศษที่ได้
- นั้นคือถ้าเศษมากกว่าแสดงว่าเลย .70 ไปแล้ว ถ้าน้อยกว่าแสดงว่าไม่ถึง .70แน่นอน
Date :
2013-11-13 04:45:16
By :
meannerss
เอาไปปัดเกี่ยวกับบัญชีใช่ไหมครับ เขียนให้ดูเล่นๆ ลองหัดใช้ดูนะครับ
myround(จำนวน, ปัดที่เท่าไหร่, ปัดตรงไหน index เริ่มจาก 0)
Code (PHP)
function myround($value, $precision, $position){
$decim = str_split(substr(($value - floor($value)), 2, $position+1));
if(isset($decim[$position])){
if($decim[$position] >= $precision and $decim[$position] < 9){
$decim[$position] = $decim[$position] + 1;
}elseif($position == 0){
$decim[$position] = 0;
$value++;
}
}
return implode('', array(floor($value),'.', implode('',$decim)));
}
echo '<br/>' . myround(5.9364964, 2, 0);
echo '<br/>' . myround(5.2364964, 3, 1);
echo '<br/>' . myround(5.2364964, 5, 2);
echo '<br/>' . myround(5.2364964, 3, 3);
ประวัติการแก้ไข 2013-11-13 07:31:58
Date :
2013-11-13 07:28:09
By :
PlaKriM
ใช่เลยค่ะ เกี่ยวกับงานบัญชี จะอิงการปัดเศษจากเมืองนอกเรื่องการวัด ของตัวสินค้าค่ะ ไม้บรรทัดเค้ากับเราไม่เท่ากัน ขอบคุณพี่ ๆ มาก ๆ เลยนะคะ ที่ให้แนะนำมือใหม่อย่างหนู
Date :
2013-11-13 09:01:21
By :
minted
ในที่สุด ก็ทำได้แล้วค่ะ มาโพสให้ความรู้ต่อด้วยค่ะ
ขอบคุณพี่ ๆ ทุกคนมาก ๆ เลยค่ะ
Code (PHP)
<?php
function r($float, $fracCnt=2, $precision=6){
$float = (string)$float;
list($n, $frac) = explode('.', $float);
$n = (int)$n;
$fracPre = substr($frac, 0, $precision);
$fracPre = (int)str_pad($fracPre, $precision, '0');
$fracLim = substr($frac, 0, $fracCnt);
$fracLim = (int)str_pad($fracLim, $precision, '0');
$fracPreLen = strlen($fracPre);
$prefixCnt = 0;
if ($fracPreLen < $precision){
if (!empty($fracPre)){
$prefixCnt = $precision - strlen($fracPre);
if ($prefixCnt > $fracCnt){
$prefixCnt = $fracCnt;
}
}
}
$half = pow(10, ($precision - $fracCnt - 1)) * 7;
$fracLimHalf = $fracLim + $half;
if ($fracPre >= $fracLimHalf){
$fracRound = $fracLimHalf + $half;
if (strlen($fracRound) > $fracPreLen){
if (strlen($fracRound) > $precision){
$n += ($n > 0) ? 1 : -1;
$fracRound = 0;
$prefixCnt = 0;
} else {
$prefixCnt--;
if ($prefixCnt < 0 ){
$prefixCnt = 0;
}
}
}
}
else{
$fracRound = $fracLim;
}
$fracRoundLen = $fracCnt - $prefixCnt;
$fracRound = substr($fracRound, 0, $fracRoundLen);
$fracRound = str_pad($fracRound, $fracRoundLen, '0');
if (0){
echo '<div style="border:solid blue 1px;">';
foreach(array(
'float','n','fracCnt','precision','frac','fracPre',
'fracLim', 'half', 'fracLimHalf',
'fracRound','prefixCnt','fracRoundLen'
) as $var){
echo "<br>$var : " . ($$var);
}
echo '</div>';
}
return ($n . '.' . str_repeat('0',$prefixCnt) . $fracRound);
}
echo r(124.1277678,3);
?>
อ้างอิงปรับเปลี่ยนมาจากกระทู้นี้ด้วยค่ะ
https://www.thaicreate.com/php/forum/032177.html
ประวัติการแก้ไข 2013-11-13 10:55:55
Date :
2013-11-13 10:54:36
By :
minted
เดี่ยวเขียนเพิ่มให้มันปรับได้หลากหลายขึ้นละกัน ได้แล้วก็ไม่เป็นไร เดี๋ยวเขียนเป็นบทความไว้ ให้คนอื่นหยิบไปใช้เผื่อมีคนต้องการ
Date :
2013-11-13 11:27:00
By :
PlaKriM
ตอบความคิดเห็นที่ : 12 เขียนโดย : love9713 เมื่อวันที่ 2013-11-13 10:27:32
คุณได้คำตอบไปแล้ว ผมยินดีด้วยครับ
แต่ผมมีข้อสงสัย++ แต่ผมขอละเว้นเอาไว้ก็แล้วกัน (คุณอาจจะต้องกลับไปเริ่มต้นเขียนใหม่อีกครั้ง)
ซึ่งมันไม่จำเป็น และผมคิดว่ามันไม่น่าจะเป็นประโยชน์สำหรับคุณ
........................................................................................................................
แต่ผมยังคาใจอยู่ครับ disabled & CSS
Date :
2013-11-13 15:45:47
By :
love9713
ตอบความคิดเห็นที่ : 21 เขียนโดย : PlaKriM เมื่อวันที่ 2013-11-14 02:19:41
สาเหตุ มันไปแอบสร้าง Css Class เอาไว้ครับ (Right Click ---> View Source)
...
...
Code (JavaScript)
.aspNetDisabled /* Auto generate by ASP.NET If TextBox set Enabled ="false" */
{
background: gray;
border: 1px transparent;
}
ึควบคุมลำบากครับ (ยุ่งยากนิดหน่อย) และยิ่งมันไปอยู่ใน AJAX Update Panel (ยุ่งยากพอสมควร)
ตอนนี้ผมรู้สาเหตุแล้วครับ (จากคำตอบของคุณ itpcc) ปัญหานี้ก็ไม่ใช่ประเด็นสำคัญอีกต่อไป
Date :
2013-11-14 06:56:26
By :
love9713
ตอบความคิดเห็นที่ : 22 เขียนโดย : love9713 เมื่อวันที่ 2013-11-14 06:56:26
รายละเอียดของการตอบ ::
บทเพลง กว้านพะเยา
โอ้ธารสวรรค์ กว๊านพะเยา
ธารรักเราครวญคร่ำ ลมโชย
พริ้วฉ่ำ ในวังน้ำวน
พร่างพรม มนต์รักมา
ดูราวสายชล ธารสวยตระการ
อยู่ในนิทรา แว่วเพลงรัก
ของปักษา ร้องอำลาคืนรัง
โน่นทิวทุ่งลิบ รวงทิพย์
เรืองรอง ราวสีทองเปลวปลั่ง
ธาราไหลหลั่ง ใสราวน้ำวัง
ขังน้ำตาแห่งดาว ห้วงน้ำลึกนัก
ห้วงรักลึก กว่าหลายเท่า
แม้นรัก ไม่จริงกับเรา
อายกว๊านพะเยา หลายเท่าเอย
โน่นทิวทุ่งลิบ รวงทิพย์
เรืองรอง ราวสีทองเปลวปลั่ง
ธาราไหลหลั่ง ใสราวน้ำวัง
ขังน้ำตาแห่งดาว ห้วงน้ำลึกนัก
ห้วงรักลึก กว่าหลายเท่า
แม้นรัก ไม่จริงกับเรา
อายกว๊านพะเยา หลายเท่าเอย
http://www.youtube.com/watch?v=VxA9ob7ieVE
Date :
2013-11-14 08:41:55
By :
love9713
Load balance : Server 00