30/09/2018, 16:04

[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

Toàn viết 18:21 ngày 30/09/2018

roundf

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

viết 18:20 ngày 30/09/2018

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).

Nguyễn Minh Dũng viết 18:15 ngày 30/09/2018

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

Toàn viết 18:16 ngày 30/09/2018

roundf

chắc tại e dùng bản Express nên nó báo lỗi
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

Nguyễn Minh Dũng viết 18:06 ngày 30/09/2018

IntellSense: identifie “roundf” is undefined

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++?

viết 18:18 ngày 30/09/2018

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.

Dr Sung viết 18:10 ngày 30/09/2018

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

Duong Blue viết 18:20 ngày 30/09/2018

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 ạ

Gió viết 18:12 ngày 30/09/2018
#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

Nguyễn Minh Dũng viết 18:19 ngày 30/09/2018

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

Duc viết 18:20 ngày 30/09/2018

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

Cao Cảnh Linh viết 18:07 ngày 30/09/2018

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)

rogp10 viết 18:13 ngày 30/09/2018

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

Cao Cảnh Linh viết 18:17 ngày 30/09/2018

ý 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

rogp10 viết 18:08 ngày 30/09/2018

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

Huỳnh Vy viết 18:05 ngày 30/09/2018

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

HK boy viết 18:17 ngày 30/09/2018

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.

Bài liên quan
0