C++ cmath trunc() - Truncate Floating Point

Updated on September 27, 2024
trunc() header image

Introduction

The trunc() function in C++ is a potent tool found within the <cmath> library, designed specifically for truncating floating-point numbers. By truncating, it means the function effectively removes the fractional part of a number, returning the integer component closest to zero. This is crucial in numerous applications where precise control over numerical data is necessary, such as graphical computations and financial calculations.

In this article, you will learn how to effectively apply the trunc() function in C++. You'll explore its fundamental behavior, its impact on different types of floating-point numbers, and operational nuances through practical examples. Additionally, you'll see the distinction between trunc() and similar functions like floor() and ceil().

Understanding trunc()

Basic Usage of trunc()

  1. Include the <cmath> library in your C++ program.

  2. Define a floating-point number.

  3. Use trunc() to remove the fractional part.

    cpp
    #include <cmath>
    #include <iostream>
    
    int main() {
        double num = 4.75;
        double truncated = trunc(num);
        std::cout << "Truncated value of " << num << " is " << truncated << std::endl;
    }
    

    This example demonstrates truncating the number 4.75 to 4.0. trunc() effectively cuts off .75, simplifying the number to its integer part without rounding.

Applying trunc() to Negative Values

  1. Recognize that trunc() behaves differently with negative numbers compared to positive numbers.

  2. Try truncating a negative floating-point number.

    cpp
    #include <cmath>
    #include <iostream>
    
    int main() {
        double num = -3.14;
        double truncated = trunc(num);
        std::cout << "Truncated value of " << num << " is " << truncated << std::endl;
    }
    

    For -3.14, trunc() returns -3.0. Unlike floor(), trunc() doesn't round down but simply discards the decimal part, emphasizing its utility in diverse numerical contexts.

Comparison with Similar Functions

Differences Between trunc(), floor(), and ceil()

  • trunc() - Removes the decimal part, maintaining the integer closest to zero.
  • floor() - Rounds the number down to the nearest whole number.
  • ceil() - Rounds the number up to the nearest whole number.

These functions cater to specific rounding needs and their understanding helps in making precise adjustments to floating-point numbers in different scenarios.

Practical Example: Comparing Functions

  1. Utilize trunc(), floor(), and ceil() in a single program.

  2. Compare their outputs to understand differences.

    cpp
    #include <cmath>
    #include <iostream>
    
    int main() {
        double num = -4.75;
    
        std::cout << "trunc(" << num << ") = " << trunc(num) << std::endl;
        std::cout << "floor(" << num << ") = " << floor(num) << std::endl;
        std::cout << "ceil(" << num << ") = " << ceil(num) << std::endl;
    }
    

    This comparison clarifies that floor() rounds -4.75 to -5.0 since it rounds down, ceil() to -4.0 rounding up, and trunc() simply removes the fractional -0.75, resulting in -4.0.

Conclusion

The trunc() function in C++ is an invaluable feature for handling floating-point numbers where only the integral portion is needed. Used judiciously, it supports various applications that require truncation without alteration through rounding. By contrasting trunc() with floor() and ceil(), tailor your numerical data handling more effectively to suit specific programmatic needs. Experiment with these functions to enhance your proficiency in managing numerical computations in C++.