PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Tuesday, July 19, 2022

[FIXED] When is it better to use trunc() instead of int() to convert floating type numbers to integers?

 July 19, 2022     int, python, python-3.x, truncate     No comments   

Issue

trunc and int functions return the same output for every float type inputs that I have tried.

They differ in the way that int can also be used to convert numerical strings to integers.

So I have a two-fold question:

  1. I would like to know if, apart from strings, is there any input for which trunc and int give different outputs?

  2. If not, when is it better to just use trunc to convert floating type numbers to integers?


Solution

int and math.trunc have a somewhat similar relationship as str and repr. int delegates to a type's __int__ method, and falls back to the __trunc__ method if __int__ is not found. math.trunc delegates to the type's __trunc__ method directly and has no fallback. Unlike __str__ and __repr__, which are always defined for object, both int and math.trunc can raise errors out of the box.

For all the built-in types that I am aware of, both __int__ and __trunc__ are defined sensibly where appropriate. However, you can define your own set of test classes to see what errors you get:

class A:
    def __int__(self):
        return 1

class B:
    def __trunc__(self):
        return 1

class C(): pass

math.trunc(A()) and math.trunc(C()) will both raise TypeError: type X doesn't define __trunc__ method. int(C()) will raise TypeError: int() argument must be a string, a bytes-like object or a number, not 'C'. However, int(A()), int(B()) and math.trunc(B()) will all succeed.

In the end the decision as to which method to use is one of connotation. trunc is inherently a math operation similar to floor, while int is a general purpose conversion, and succeeds in more cases.

And don't forget about operator.index and the __index__ method.



Answered By - Mad Physicist
Answer Checked By - Katrina (PHPFixing Volunteer)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing