Kiến thức

Các hàm số học exp(), Idexp(), modf, ln(), log10(), ceil(), floor(), atoi(chuyển chữ thành số).

Nick Chung

gửi vào Thứ năm, 9 Tháng 2, 2017 – 19:00

Mô tả dự án: 

Bài này bổ xung các tập lệnh về các phép tính : exp(ex), Idexp(x*2exponent),  modf, ln(x), log10(x), floor(), ceil(), atoi()…

Mục lục

  • Các kiến thức liên quan

  • Hàm exp(x)

  • Hàm frexp(x, int *exp)

  • Hàm ldexp(x, int exp)

  • Hàm log(x)

  • Hàm log10(x)

  • Hàm modf(x, *i)

  • Hàm ceil(x)

  • Hàm floor(x)

  • Hàm atoi(a[])

  • Hàm itoa

Các kiến thức liên quan

Hằng số toán học e là cơ số của logarit tự nhiên.

Giá trị số của e tới 20 chữ số thập phân là:

e=2,71828 18284 59045 23536…

Đồ thị hàm y = ax.

Hàm exp(x)

Bạn đang xem: Các hàm số học exp(), Idexp(), modf, ln(), log10(), ceil(), floor(), atoi(chuyển chữ thành số).

Cấu trúc

 double exp(double x) 

Kiểu tham trị x:

double

.

Kiểu trả về: double.

Trả về giá trị của biếu thức: ex

Đồ thị hàm y = ex.

Ví dụ

 double x = 4; double y; void setup() { Serial.begin(9600); y = exp(x); Serial.println(y, 5); // lấy 5 số phần thập phân //y=54.59815 } void loop() {}

Hàm frexp(x, int *exp)

Cấu trúc

 double frexp(double x, int *exponent) 
  • Kiểu tham trị x:

    double

    .

  • Kiểu trả về: double.
  • Kiểu con trỏ:

    int

    .

Giá trị được trả về gồm 2 số:

  • mantissa (phần định trị x )
  • số nguyên được trỏ tới bởi exponent (số mũ a ).

 Thuộc biểu thức y = x * (2a).

Ví dụ

 double y = 20000; // y=x*(2 mũ a) int a; // số mũ double x; // phần định trị void setup() { Serial.begin(9600); x = frexp(y, &a); // chú ý thêm dấu "&" (phép gán địa chỉ) Serial.println(a); Serial.println(x, 8); // lấy 8 số phần thập phân để xem //a= 15 //x=0.61035156 // tóm lại : y=0.6103 * (2^15) ! } void loop() {}

Hàm ldexp(x, int exp)

Cấu trúc

 double ldexp(double x, int exponent)

Trả về giá trị của biểu thức :  x*2exponent

Kiểu tham trị exponent:

int

. (exponent dịch sang tiếng Việt là “số mũ” ).

Kiểu tham trị x:

double

.

Kiểu trả về: double.

Chú ý: kí tự “l” trong chữ “ldexp” là chữ e-lờ cao (viết thường).

Xem thêm: Phép Chia Trong Toán Học Như Thế Nào Trong Lập Trình

Ví dụ

 double y; // y=x*(2 mũ a) int a = 15; // số mũ double x = 0.61035156; // phần định trị void setup() { Serial.begin(9600); y = ldexp(x, a); Serial.println(y, 8); // lấy 8 số phần thập phân để xem //y=20000.00000000 } void loop() {}

Hàm log( x)

Cấu trúc

 double log(double x)
  • Trả về ln(x)
  • Kiểu tham trị x:

    double

    .

  • Kiểu trả về: double.

 

 

Ví dụ

 double y; // y=ln(x) double x = 6.5; void setup() { Serial.begin(9600); y = log(x); Serial.println(y, 8); // lấy 8 số phần thập phân để xem //y=1.87180223 } void loop() { }

Hàm log10(x)

Cấu trúc

 double log10(double x) 
  • Kiểu tham trị x:

    double

    .

  • Kiểu trả về: double.
  • Trả về log10(x)

 

 

Ví dụ

 double y; // y=log10(x) double x = 4.0; void setup() { Serial.begin(9600); y = log10(x); Serial.println(y, 8); // lấy 8 số phần thập phân để xem //y=0.60206003 } void loop() { }

Hàm modf(x, *i)

Cấu trúc

 double modf(double x, double *integer)
  • Tách lấy phần nguyên và phần thập phân của một số thực.
  • Kiểu tham trị x:

    double

    .

  • Kiểu trả về: double.

Chú ý thêm kí tự “&” cho biến con trỏ.!

Xem thêm: Câu hỏi đuôi (Tag Question): Cấu trúc, cách dùng và bài tập áp dụng-Kiến Thức Tiếng Anh

Ví dụ

 double S = 62.123456; double Phan_nguyen, Phan_thap_phan; void setup() { Serial.begin(9600); Phan_thap_phan = modf(S, &Phan_nguyen); Serial.println(Phan_thap_phan, 6); // lấy 6 số phần thập phân để xem Serial.println(Phan_nguyen, 1); // lấy 1 số phần thập phân để xem } void loop() {}

Hàm ceil(x)

Cấu trúc

 double ceil(double x)
  • Trả về giá trị nguyên nhỏ nhất lớn hơn hoặc bằng x
  • Kiểu tham trị x:

    double

    .

  • Kiểu trả về: double.

Ví dụ

 x
ceil(x)
1.2
2
1.5
2
1.9
2
2.0
2
2.1
3

Ví dụ

 float a = 1.2; double b; void setup() { Serial.begin(9600); b = ceil(a); Serial.println(b, 1); // lấy 1 số phần thập phân để xem // b=2.0 } void loop() { ; }

Hàm floor(x)

Cấu trúc

 double floor(double x) 
  • Kiểu tham trị x:

    double

    .

  • Kiểu trả về: double.
  • Trả về giá trị nguyên lớn nhất nhỏ hơn hoặc bằng x

Xem thêm: Phương trình vận tốc của chuyển động thẳng đều 

Ví dụ

x
floor(x)
1.2
1
1.5
1
1.9
1
2.0
2
2.1
2

Ví dụ

 float a = 2.0; double b; void setup() { Serial.begin(9600); b = floor(a); Serial.println(b, 1); // lấy 1 số phần thập phân để xem // b=2.0 } void loop() { }

Hàm atoi(a[])

Cấu trúc

 int atoi(const char *A)

Hàm này dùng để chuyển đổi kí tự dạng chữ số (kiểu

char

) về chữ số. Nó trả về số nguyên đã được chuyển đổi dưới dạng một giá trị

int

. Nếu không có sự chuyển đổi hợp lệ nào được thực hiện, hàm trả về 0.

Khi đó số nhập vào có giá trị trong khoảng từ (-32768 -> 32767 ).

Ví dụ 1

 const char Number[5] = "12345"; // mảng kí tự //hoặc : const char Number[]="12345"; int S; void setup() { Serial.begin(9600); S = atoi(Number); Serial.println(S); // Kết quả S là một số có giá trị S=12345. } void loop() { }

Ví dụ 2: Biểu diễn một số âm

Chú ý kích cỡ của mảng sẽ tăng thêm 1 đơn vị để lưu thêm dấu “-“ đằng trước số âm.

 const char Number[] = "-12345"; // mảng kí tự //hoặc : const char Number[6]="-12345"; int S; void setup() { Serial.begin(9600); S = atoi(Number); Serial.println(S); // Kết quả S là một số có giá trị S=12345. } void loop() { }

Ví dụ 3: Nhập chữ số xem như giá trị

Các bạn chú ý cỡ của mảng phải bằng số lượng chữ cái của số muốn nhập.

Số từ  (-99 đến 999) thì cỡ mảng là 3.

Số từ (-999 đến 9999 ) thì cỡ mảng là 4.

Số từ (-9999 đến đến  32767) thì cỡ mảng là 5.

Số từ (-32768 đến -10000) thì cỡ mảng là 6.

 char Number[5]; // mảng kí tự int S; void setup() { Serial.begin(9600); // Kết quả S là một số có giá trị S=12345. Serial.println("Nhap so :"); } void loop() { while (1) { //lặp để quét if (Serial.available()) { Serial.readBytes(Number, 5); // đọc 5 byte Char với S = atoi(Number); Serial.println(S); } } }

Hàm itoa ()

Hàm này dùng để chuyển một số sang chuỗi kí tự !

 char * itoa ( int value, char * str, int base );

Trong đó:

  • value : là số cần truyền , (nếu value là một số âm thì kí tự “-” sẽ được đặt ở đầu chuỗi !)
  • str : mảng chuỗi để lưu số dưới dạng kí tự
  • base : để lựa chọn dạng cơ số muốn chuyển về 
    • base =2 : chuỗi kí tự có dạng số nhị phân
    • base=8 :  chuỗi kí tự có dạng bát phân
    • base =10 : chuỗi kí tự có dạng thập phân
    • base=16 : chuỗi kí tự có dạng HEX (thập lục phân)

Ví dụ minh họa :

 void setup() { Serial.begin(9600); } int a = 1234; char chu_so[20]; void loop() { itoa(a, chu_so, 10); // chuyển thành số thập phân Serial.println(chu_so); itoa(a, chu_so, 16); // chuyển thành số hex Serial.println(chu_so); itoa(a, chu_so, 8); // chuyển thành số bát phân Serial.println(chu_so); itoa(a, chu_so, 2); // chuyển thành số nhị phân Serial.println(chu_so); delay(1000); Serial.println("___________"); } 

 

lên

6 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

exp( ex)

Idexp( x*2exponent )

modf

ln(x)

log10(x)

atoi()…

Chuyên mục: 

Lập trình C

Chuyên mục: Kiến thức

Related Articles

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Check Also
Close
Back to top button