1 ฟังก์ชันทางคณิตศาสตร์
ฟังก์ชันทางคณิตศาสตร์เป็นฟังก์ชันเกี่ยวข้องกับการคำนวณตัวเลข
ทั้งการคำนวณตัวเลขทั่วไป เกี่ยวกับการปัดเศษเลข ฟังก์ชันทางตรีโกณ การสุ่มตัวเลข
การแปลงตัวเลขระหว่างฐานและหน่วยที่ใช้บ่อย การทดสอบชนิดข้อมูล
ซึ่งฟังก์ชันในกลุ่มนี้เป็นฟังก์ชันมาตรฐานที่ไม่ต้องติดตั้งโมดูล
เพิ่มเติม (extension
module) พิเศษใดๆ
กลุ่มฟังก์ชันทางคณิตศาสตร์มีฟังก์ชันต่างๆ
ที่สำคัญแยกตามกลุ่มย่อยดังนี้
1 1) ฟังก์ชันคณิตศาสตร์ทั่วไป
number abs (x) ให้ค่า Absolute value คือค่าที่ไม่คิดเครื่องหมายบวกลบ เช่น
abs (345) ให้ข้อมูลตัวเลข 345,
abs(-8023.50) ให้ผลลัพธ์ตัวเลข 8023.50 เป็นต้น
float exp (x) คำนวณค่า exponential ของ e (Natural logarithm base) ex
float log10 (x) คำนวณค่า logarithm ฐาน 10
float log (x) คำนวณค่า Natural logarithm loge
(x) หรือ ln x
number max (x1,x2) ให้ค่าข้อมูลที่สูงสุดระหว่าง x1 กับ x2 เช่น
max (50.4,-35) ได้ผลลัพธ์ 50.4 หรือ
max (-380, -550) จะให้ผลลัพธ์ -380 เป็นต้น
number min (x1,x2) ให้ค่าข้อมูลที่น้อยที่สุดระหว่าง x1 กับ x2
float fmod (x1,x2) ให้ค่าเศษจากการหารเลขทศนิยม เช่น fmod(3.5,2)
ได้ผลเป็น 1.5
(3.5 หารด้วย 2
ได้ผลจำนวนเต็มเป็น 1 และเหลือเศษ 1.5)
float hypot (x,y) คำนวณค่า Square root ของ (x2 + y2)
float pi ( ) ให้ค่า pi (3.1415926535898)
float pow (x,y) คำนวณค่ายกกำลัง x y
float sqrt (x) คำนวณค่าถอดรากที่ 2 (square
root) ของ x
ฟังก์ชันเหล่านี้มักจะใช้กับสูตรการคำนวณตัวเลขเพื่อการวิเคราะห์ต่างๆ
เช่น การคำนวณหาแนวโน้ม ค่าทางสถิติทั้งด้านวิทยาศาสตร์ด้านการเงิน
ตัวอย่างของการใช้ฟังก์ชัน min, max เช่นการหักลดหย่อนภาษีที่ระบุว่าให้หักได้ตามจริงแต่ไม่เกินจำนวนที่ระบุ
หรือ ให้เสียภาษีเหมาจ่าย 0.05%
หรือทำการหักลดหย่อนแล้วคิดภาษีตามอัตราที่ระบุ แล้วแต่อย่างใดจะมากกว่ากัน ฯลฯ
เป็นต้น
$insureDeduc = min ($insurance,50000.00);
1 2) ฟังก์ชันเกี่ยวกับการปัดเศษตัวเลข
• float ceil (float x)
ปัดเศษเลขทศนิยมให้เป็นเลขจำนวนเต็มโดยการปัดเศษขึ้นหากมีเลขหลังจุดทศนิยม
(ปัดเศษเลขโดยเพิ่มค่าขึ้นให้เป็นเลขจำนวนเต็มจำนวนถัดไป)
ผลลัพธ์ได้เลข floating point ที่มี
เศษทศนิยมเป็น x.0 เช่น
ceil (4.01) ได้ผลลัพธ์ 5.0
ceil (3.98) ได้รับผลลัพธ์ 4.0
ceil (-3.98) ได้รับผลลัพธ์ -3.0
ceil (-4.01) ได้ผลลัพธ์ -4.0
เป็นต้น
• float floor (float x)
ปัดเศษเลขทศนิยมให้เป็นเลขจำนวนเต็มโดยการปัดเศษลงหากมีเลขหลังจุดทศนิยม
(ปัดเศษเลขโดยลดค่าลงให้เป็นเลขจำนวนเต็มจำนวนถัดไป)
ผลลัพธ์ได้เลข floating point ที่มี
เศษทศนิยมเป็น x.0 เช่น
floor (4.99) ได้ผลลัพธ์ 4.0
floor (5.1) ได้ผลลัพธ์ 5.0
floor (5.0) ได้ผลลัพธ์ 5.0
บทที่ 3
ฟังก์ชันมาตรฐานของภาษา PHP.93
floor (-5.1) ได้ผลลัพธ์ -6.0
floor (-4.99) ได้ผลลัพธ์ -5.0
• float round (float x)
ปัดเศษเลขทศนิยมโดยปัดขึ้นหรือลงดูจากค่าทศนิยม
0.5 ผลลัพธ์ได้เลข floating point
ที่มีเศษทศนิยมเป็น x.0 เช่น
round (4.4999) ได้ผลลัพธ์ 4.0
round (4.5) ได้ผลลัพธ์ 5.0
round (-4.4999) ได้ผลลัพธ์ -4.0
round (-4.5) ได้ผลลัพธ์ -5.0
ฟังก์ชันเหล่านี้จะทำการปัดเศษทศนิยมให้เหลือแต่จำนวนเต็มแต่ยังคงได้รับผลเป็นตัวเลขชนิด
floating point เนื่องจากหากใช้ integer อาจไม่สามารถรับข้อมูลขนาดใหญ่ที่มาจากการปัดเศษของfloat ได้หากต้องการให้ปัดตัวเลขตามจำนวนหน่วยของหลักเลขที่ต้องการ เช่น
ปัดเลขทศนิยมหลักที่3 (ปัดให้เหลือเศษเพียง 2 หลัก) ตย. 45.1225 ปัดเศษทิ้งเป็น 45.12 หรือปัดขึ้นเป็น 45.13 ทำได้โดยceil
($x/0.01)*0.01 หากต้องการปัดเศษให้เหลือเลขหลังจุด 4 หลักก็จะเป็น ceil ($x/0.0001)*0.0001
หากต้องการปัดเลขจำนวนเต็มให้เป็นหลักร้อย เช่น 35640
หากปัดขึ้นจะเป็น 35700 สามารถใช้ expression
ceil($x/100)*100 ซึ่งหากจะเขียนเป็น expression แบบทั่วไปสร้างเป็น
function ใหม่ได้เป็น
function ceil2digit ($x,$digit=0) {
$c = pow(10,$digit);
return ceil($x/$c) * $c;
}
โดยที่มีการส่ง argument
2 ตัวได้แก่ $x เป็นค่าที่ต้องการปัดเลข และ $digit
จำนวนหลัก
เลขที่ต้องการ
เช่นหากจะปัดเลขให้เป็นหลักร้อยคือปัดเลขจำนวนเต็มที่มีเลข 0 ตรงท้าย 2 หลัก จะส่ง$digit เป็น
2 หากจะปัดเป็นหลักหมื่นคือปัดเลขจำนวนเต็มขึ้น 4 หลัก กำหนด $digit เป็น 4
ในกรณีปัดเศษเศษทศนิยมจะกำหนดจำนวนหลักเป็นเลขลบ เช่น
หากต้องการปัดเลขเศษทศนิยมให้เหลือ 2 หลัก กำหนด $digit
เป็น -2 หากจะปัดเลขเศษทศนิยมให้เหลือ 5 หลัก กำหนด $digit เป็น -5
เป็นต้น
ตัวอย่างการเรียกใช้ฟังก์ชัน ceil2digit(
) แสดงได้ดังนี้
<?
echo ceil2digit(3456,2); // 3500
echo ceil2digit(1401,2); // 1500
echo ceil2digit(1000001,5); // 1100000
echo ceil2digit(356.136589,-4); //356.1366
?>
1 3) ฟังก์ชันตรีโกณ
float acos (x) Arc cosine คือ cos-1 (x)
float acosh (x) Inverse hyperbolic cosine ของ x
float asin (x) Arc sine ของ x, sine-1 (x)
float asinh (x) Inverse hyperbolic sine ของ x
float atan2 (x,1x2) arc tangent of สองค่า
float atan (x) Arc tangent ของ x, tan-1 (x)
float atanh (x) Inverse hyperbolic tangent ของ x
float cos (x) Cosine ของ x, cos(x)
float cosh (x) Hyperbolic cosine ของ x
float sin (x) Sine ของ x, sine (x)
WEB PROGRAMMING
Using PHP. and MySQL.94 94
float sinh (x) Hyperbolic sine ของ x
float tan (x) Tangent ของ x
float tanh (x) Hyperbolic tangent ของ x
ฟังก์ชันในกลุ่มนี้มักจะใช้กับการคำนวณทางวิทยาศาสตร์วิศวกรรม
เป็นหลัก เช่นในการ
ออกแบบโครงสร้างทางวิศวกรรม การคำนวณทางฟิสิกส์ฯลฯ เป็นต้น
ส่วนในการใช้งานด้านทั่วไปมักไม่ได้ใช้ประโยชน์จากฟังก์ชันเหล่านี้ค่า argument
ที่ส่งให้แก่ฟังก์ชันตรีโกณเป็นข้อมูลตัวเลขfloating point และจะให้ผลลัพธ์เป็น floating point เช่นกัน
1 4) ฟังก์ชันการแปลงเลข-หน่วย
เป็นฟังก์ชันที่ใช้แปลงตัวเลขหรือข้อความแสดงตัวเลขฐานหนึ่ง
ไปเป็นข้อความหรือตัวเลขฐานอื่นๆ มีทั้งฟังก์ชันแปลงฐานใดๆ
และฟังก์ชันที่กำหนดเฉพาะฐาน และยังมีฟังก์ชันที่ทำการแปลงหน่วย
ของมุมด้วย ฟังก์ชันในกลุ่มนี้ประกอบด้วยฟังก์ชันต่างๆ ดังนี้
string base_convert (string data,
int frombase, int tobase)
แปลงข้อความเลขฐานหนึ่งไปเป็นอีกฐานหนึ่งโดยระบุฐาน
ของเลขต้นทางและผลลัพธ์ตัวอย่างเช่น
$accessBit = base_convert ("744",8,2);
เป็นการแปลงข้อความจากเลขฐาน 8 เป็นเลขฐานสอง
เป็นต้น
int bindec ( string binary_string) แปลงข้อความแสดงเลขฐานสองให้เป็นเลขจำนวนเต็มฐาน
สิบ
string decbin ( int number) แปลงตัวเลขจำนวนเต็มให้เป็นข้อความแสดงเลขฐานสอง
string dechex ( int number) แปลงตัวเลขจำนวนเต็มให้เป็นข้อความแสดงเลขฐานสิบหก
string decoct ( int number) แปลงตัวเลขจำนวนเต็มให้เป็นข้อความแสดงเลขฐานแปด
float deg2rad ( float number) แปลงตัวเลขมุมที่มีหน่วยเป็นองศาให้เป็นหน่วย
radian
int hexdec ( string hex_string) แปลงข้อความแสดงเลขฐานสิบหกให้เป็นตัวเลขจำนวนเต็ม
int octdec ( string hex_string) แปลงข้อความแสดงเลขฐานแปดให้เป็นตัวเลขจำนวนเต็ม
float rad2deg ( float number) แปลงตัวเลขมุมที่มีหน่วยเป็นเรเดียนให้เป็นหน่วยองศา
ตัวอย่างเช่น
การสร้างฟังก์ชันเพื่อสร้าง color # ที่กำหนดสีให้แก่
HTML tag เช่น <body
bgcolor="#03203A"> ซึ่งต้องการเลขฐานสิบหก
จากค่าตัวเลขสีแต่ละสีเป็นเลข 0-255 แสดงดัง
Listing 3.1-1
Listing 3.1-1 colorId-exam.php
1 <?
2 function colorID255($r,$g,$b){
3 $r = min($r,255);
4 $g = min($g,255);
5 $b = min($b,255);
6 return "#" .
7 str_pad(dechex($r),2,"0",STR_PAD_LEFT) .
8 str_pad(dechex($g),2,"0",STR_PAD_LEFT) .
9 str_pad(dechex($b),2,"0",STR_PAD_LEFT);
10 }
11 echo colorID255(200,40,130);
12 ?>
ตัวอย่างนี้ฟังก์ชัน colorID255 รับ argument 3 ตัวเป็นค่าสี integer สำหรับแม่สี red,
green และ blue จากตัวแปร $r,
$g และ $b ในตัวอย่างนี้ใช้ฟังก์ชัน 3 ฟังก์ชันได้แก่ min( ) ,dexhex( ) และ str_pad(
) โดย คำสั่งบรรทัดที่ 3-5
ใช้เพื่อไม่ให้ค่าในตัวแปร $4,$g,$b เกิน 255เนื่องจากฟังก์ชัน min( ) จะให้ผลจากค่า argument
ที่มีค่าน้อยกว่าดังนั้นหากค่าในตัวแปรเกิน 255จะให้ผลลัพธ์เป็น 255 แต่หากไม่เกินจะให้ค่าเดิม
ในบรรทัดที่ 7-9 จะทำการแปลงจากค่าตัวเลขในตัวแปรให้กลายเป็นข้อความที่แสดเลขฐานสิบหกโดยใช้ฟังก์ชัน
dechex( ) และเติมเลข 0 นำหน้าให้ครบ 2 หลักโดยใช้ฟังก์ชัน str_pad( )
1 5) ฟังก์ชันสุ่มตัวเลข
ในภาษา PHP มีการใช้ฟังก์ชันเกี่ยวกับการสุ่มตัวเลข 2 แบบได้แก่
แบบ libc ซึ่งจะใช้ฟังก์ชัน
rand ( ) และการใช้ฟังก์ชันสุ่มด้วยเทคนิค Mersenne
Twister ที่สร้างค่าสุ่มได้เร็วกว่า libc ถึง 4 เท่าโดยใช้ฟังก์ชัน mt_rand ( ) ทั้งสองฟังก์ชันจะให้ค่าสุ่มเป็นเลขจำนวนเต็มที่กำหนดช่วงข้อมูลได้หากโปรแกรมใดต้องการสร้างค่าสุ่ม
ควรจะใช้คำสั่งเพื่อเริ่มต้นการสร้างตัวเลขสำหรับการสุ่มโดยใช้ฟังก์ชัน Seed
random number generator ในตอนต้นของ page คำสั่งการเริ่มการสร้างตัวเลขสุ่มนี้ใช้เพียงครั้งเดียวในแต่ละ
page แล้วสามารถใช้ฟังก์ชัน rand( ) ได้หลายครั้ง
หากไม่ใช้คำสั่งเริ่มต้นการสร้างค่าสุ่มจะทำให้ตัวเลขสุ่มเมื่อโปรแกรมทำงานแต่ละรอบได้ค่าที่ซ้ำกัน
ฟังก์ชันที่ใช้
เริ่มการสร้างค่าสุ่มคือ srand( ) และ mt_srand(
)การใช้ srand หรือ mt_srand ต้องการ parameter เป็นตัวเลขเพื่อกำหนดค่าตั้งต้นของการสุ่ม
ซึ่งเทคนิคโดยทั่วไปเราจะใช้ค่าที่ไม่เหมือนกันในแต่ละครั้งที่เพจถูกเรียกให้ทำงาน
ซึ่งมักจะดึงเอาเวลา timestamp ในขณะที่เพจถูกเรียกใช้งาน
ที่มีความละเอียดสูง ซึ่งมีฟังก์ชันสนับสนุนคือmicrotime( ) นำมาใช้เป็นค่าเริ่มต้น
ซึ่งมักจะใช้ code ดังนี้
srand((float)microtime() * 1000000);
ใน PHP version
4.2.0 เป็นต้นไปไม่จำเป็นต้องเขียนคำสั่ง srand หรือ mt_srand เนื่องจาก
PHP engine จะดำเนินการเองโดยอัตโนมัติ
รายการฟังก์ชันเกี่ยวกับการสุ่มตัวเลขแสดงในตารางต่อไปนี้
int mt_getrandmax ( ) ให้ค่าสุ่มสูงสูงสุดที่สามารถทำได้
void mt_srand ( ) เริ่มการสร้างค่าสุ่มในโปรแกรม
int mt_rand ( [int min, int
max])
สร้างตัวเลขสุ่มโดยสามารถกำหนดค่าสูงสุด
ต่ำสุดได้หากไม่กำหนด
จะให้ค่าระหว่าง 0 ถึง ค่าสูงสูดที่สามารถทำได้ (ใช้ฟังก์ชัน
getrandmax หากต้องการทราบค่าสูงสุดที่สามารถทำได้)
int getrandmax ( ) ให้ค่าสุ่มสูงสูงสุดที่สามารถทำได้
int rand ( ) สร้างตัวเลขสุ่ม
void srand ( ) เริ่มการสร้างค่าสุ่มในโปรแกรม
ฟังก์ชันเกี่ยวกับการสร้างตัวเลขสุ่ม
สามารถนำไปใช้ประโยชน์ได้เช่น การสุ่มรายการข้อมูล
ขึ้นมาแสดง ซึ่งข้อมูลนั้นอาจจะเป็นบทความทีน่าสนใจ รูปภาพ banner
โฆษณา ฯลฯ เป็นต้น
และนอกจากนี้ยังอาจใช้ฟังก์ชันการสุ่มเพื่อสร้างข้อมูลสำหรับการทดสอบขึ้นอาจเป็นข้อมูลที่สร้างในระหว่างการทดสอบโปรแกรมหรือสร้างข้อมูลตัวอย่างเก็บลงในไฟล์ข้อมูลหรือฐานข้อมูลสำหรับใช้ทดสอบ
หรืออาจสุ่มเพื่อสร้างสภาวะจำลองการทำงาน
เช่นสุ่มเวลาที่จะมีข้อมูลลำดับถัดไปเข้ามา เป็นต้น
ตัวอย่างแสดงการสุ่มข้อมูลตัวเลขที่อยู่ระหว่าง
25-100 จำนวน 50 ค่า แสดงผลโดยมี
เครื่องหมาย comma
คั่น
<?
mt_srand();
for ($i=0; $i<50; $i++) {
echo $comma, mt_rand (25,100);
$comma = ', ';
}
?>
1 6) ฟังก์ชันทดสอบนิพจน์ตัวเลข
ฟังก์ชันเหล่านี้จะทำการตรวจสอบข้อมูลที่ส่งมาใน
argument ว่าได้เป็นข้อมูลที่สามารถเก็บ
ผลเป็นตัวเลขหรือไม่จะรับข้อมูลใน argument เป็นชนิดตัวเลข และให้ผลลัพธ์เป็น Boolean แสดงผลลัพธ์จากการตรวจสอบเป็น
true หากตรงเงื่อนไข หากไม่ตรงจะได้ false
• boolean is_finite (float val)
WEB PROGRAMMING
Using PHP. and MySQL.96 96
ทดสอบว่าเป็น expression
ตัวเลขที่ให้ค่าที่สามารถเก็บข้อมูลแบบ double ได้ (finite)
หรือไม่
• boolean is_infinite (float val)
ทดสอบว่าเป็น expression
ให้ผลเป็นตัวเลขที่ให้ค่าตัวเลขที่ไม่สามารถเก็บค่าแบบ
double ได้ทั้งค่าบวกหรือลบหรือไม่
คือเป็นค่าที่มีขนาดใหญ่มากเกินความสามารถของ php ที่จะ
เก็บได้
• boolean is_nan (float val)
ทดสอบว่าเป็น expression
ที่ได้ผลเป็นตัวเลขหรือไม่ หากไม่เป็นชนิดตัวเลข (is not
anumber) อาจเป็นผลจากการใช้ expression ที่ไม่สามารถให้ผลเป็นค่าตัวเลขได้ถูกต้อง
จะให้ผลลัพธ์เป็น true แต่หากเป็นข้อมูลตัวเลขจะได้ผลลัพธ์เป็น
false เช่น is_nan( acos(1.01)) จะได้เป็น
true (ปกติค่า cosine จะมีค่าไม่เกิน 1 ดังนั้น arc cosine ของ 1.01
ไม่สามารถหาค่าได้ฟังก์ชันเหล่านี้มักจะใช้เพื่อตรวจสอบความถูกต้องจากการคำนวณตัวเลขของexpression
ว่าสามารถให้ผลลัพธ์ที่เป็นตัวเลขที่ถูกต้องหรือไม่
ซึ่งในการคำนวณด้วยexpression ที่เกิดผลลัพธ์เป็นค่าตัวเลขทศนิยมที่มีขนาดใหญ่มากๆ
หรือมีขนาดเล็กมากๆ จนการเก็บข้อมูลแบบ double ซึ่งถือเป็นวิธีเก็บข้อมูลที่ได้ข้อมูลขนาดใหญ่มากที่สุดของภาษา
PHP ไม่สามารถแทนค่าดังกล่าวได้หากนำผลลัพธ์จาก expression
นั้นไปใช้ก็ได้ได้ผลที่ผิดพลาดไป
จึงต้องมีการตรวจสอบก่อนว่าได้ผลลัพธ์ที่ถูกต้อง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น