[Wiki] Cách làm tròn số thực trong C++

Trên FB có một bạn hỏi: "trong C++ làm tròn số thập phân như thế nào? Như 1.23456789 làm tròn 2 số là 1.24.

#include <iostream>
#include <math.h>

int main()
{
    double val = 1.23456789;
    std::cout << ceilf(val * 100) / 100 << std::endl; /* 1.24 - lam tron len*/
    std::cout << roundf(val * 100) / 100 << std::endl; /* 1.23 - lam tron gan nhat*/
    std::cout << floorf(val * 100) / 100 << std::endl; /* 1.23 - lam tron xuong*/
    return 0;
}

Editor are welcome :smile:

14 Likes

cái này báo lỗi là sao anh ơi

:slight_smile: Trước mình chỉ sử dụng có floorf thôi. Có thể làm thế này để làm tròn lên: floorf( a + 0.6f).

3 Likes

Báo lỗi như thế nào em?

chắc tại e dùng bản Express nên nó báo lỗi :frowning:
IntellSense: identifie “roundf” is undefined
ngoài dùng roundf thì còn cách nào để làm tròn gần nhất không anh

Lơ cái lỗi IntellSense đi, nó bị ngu với C++ hay sao ấy. Anh ít làm với VS nên anh không rõ. Lỗi này vẫn compile và chạy được.

@tranhuanltv lỗi IntellSense là sao vậy Huân? Sao nó cứ bị lỗi này với C++ hoài? Hay IntellSense chỉ sử dụng cho Visual C++?

Ngày trước tớ dùng VS2010 cũng không dùng được roundf, chỉ có dùng floorf. http://stackoverflow.com/questions/485525/round-for-float-in-c . làm tròn gần nhất thì dùng floorf như cách trên ấy.

1 Like

Làm sao để mình làm tròn vd : 1.24 -> 1.0 và 1.26 -> 1.5 vậy a @ltd

Cháu có bài làm tròn đến số thập phân thứ nhất từ 0.5 , còn nhỏ hơn 0.5 thì làm tròn xuống 0. Giúp cháu với ạ :sleepy: :sleepy:

#include <math.h>

Function: long int lround (double x)
Function: long int lroundf (float x)
Function: long int lroundl (long double x)

xem chi tiết http://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html#Rounding-Functions

A post was split to a new topic: 5e-006 có nghĩa là gì?

đấy là C++ còn làm xuống trong C thì sao p

1 Like

Vậy làm tròn với phần thập phân là 00 thì sao ạ? VD: 2.00
( mà dùng setprecision thì nó chỉ làm tròn đc bình thường thôi ạ, nhưng mà 2.00 thì nó hiện là 2)

Vậy là tròn rồi :smiley: bạn muốn ntn?

ý là nếu nó là số nguyên thì cho nó hiện ra thêm phần thập phân là 00 vd: kqua là 2 thì in ra là 2.00

std::cout << setiosflags(std::fixed);

anh ơi mình dùng setprecision thì có khác gì hông ạ?

setprecision chỉ là in ra số thập phân với 1 số chữ số phần thập phân nhất định thôi, chứ không hẳn là làm tròn.

1 Like

cho tớ hỏi làm sao để alm2 tròn 20.01 thành 21 v bạn

Làm tròn lên (ceil).

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?