Truncate Float i Python: förklaras med exempel

Att trunkera ett flyttal är en vanlig operation som många programmerare stöter på i olika applikationer. Processen går ut på att ta bort decimalen för en float, så att endast heltalsdelen blir kvar. Det är en värdefull teknik för att förenkla beräkningar, förbättra läsbarheten i utdata och minska potentiella avrundningsfel.

För att trunkera flytvärden i Python kan du använda funktionen math.trunc(), decimalmodul eller strängmanipulation. Med dessa tekniker kan Python-utvecklare skräddarsy trunkeringsprocessen till deras specifika krav med flexibilitet och precision.

Truncate Float i Python: förklaras med exempel

I den här artikeln kommer vi att undersöka hur trunkering kan tillämpas inom . Vi kommer att fördjupa oss i olika praktiska exempel och presentera en omfattande titt på hur man använder denna teknik för maximal effekt.

Låt oss börja med att titta på de grundläggande begreppen och teknikerna för att trunkera strängar, tal och datastrukturer i Python.

Innehållsförteckning

Python Truncate Basics

I det här avsnittet kommer vi att täcka definitionen av trunkering, titta på Python-funktioner för trunkering och lära oss hur man trunkerar decimaler och flytningar.

1. Definition av Truncate i Python

Trunkering är en process för att förkorta ett tal genom att ta bort decimalen. Det är ett viktigt begrepp inom datavetenskap och matematik och används för att reducera siffror till en enklare form utan att ändra deras värde.

2. Hur man använder Python Truncate-funktionen

Det finns flera sätt att trunkera absoluta värden i Python. En vanlig metod för att uppnå trunkering är att använda math.trunc() -funktionen, som direkt tar bort decimalerna från ett binärt flyttalsvärde.

Här är ett exempel:

import math

float1 = 123.356
float2 = -2434.545

print(math.trunc(float1))  
print(math.trunc(float2))  

Produktion:

123
-2434

Denna metod ger liknande resultat som funktionen int() , som också trunkerar det givna talet genom att ta bort decimalerna.

Truncate Float i Python: förklaras med exempel

3. Hur man trunkerar decimaler och flytningar i Python

I vissa fall kan du bli tvungen att trunkera en float till ett visst antal decimalsiffror. Funktionen round() kan användas för att avrunda tal i sådana fall. Observera dock att funktionen round() bara avrundar talet istället för att trunkera det.

Om du vill trunkera till en specifik decimalpunkt kan du använda följande tillvägagångssätt:

def truncate_float(float_number, decimal_places):
    multiplier = 10 ** decimal_places
    return int(float_number * multiplier) / multiplier

float3 = 3.14159
result = truncate_float(float3, 2)

print(result)

Produktion:

3.14

I exemplet ovan tar funktionen truncate_float() två parametrar - flyttalet som ska trunkeras och det önskade antalet decimaler.

Den använder en multiplikator för att först flytta flottörens decimalkomma, konverterar sedan resultatet till ett heltal (avkortar talet effektivt), och delar slutligen heltal med multiplikatorn för att återställa decimalkomma till sin ursprungliga position.

Tänk på att arbete med flöten i Python kan leda till viss oprecision i beräkningar på grund av flyttalsaritmetikens natur. Därför, när noggrannhet och precision är avgörande, överväg att använda decimalmodulen .

Okej, det är grunderna för hur man trunkerar värden i Python. I nästa avsnitt ska vi ta en titt på hur du kan trunkera värden med hjälp av matematikbiblioteket och andra Python-funktioner.

Trunkering i Python med hjälp av matematikbibliotek och funktioner

Inom Python-programmering är optimering ofta nyckeln. Att använda Pythons "matematiska" bibliotek och dess inbyggda funktioner kan förbättra prestandan avsevärt, särskilt när man hanterar stora datamängder eller komplexa beräkningar.

Det här avsnittet är tillägnat att utforska hur vi kan använda "matematiska"-biblioteket och dess robusta funktioner för trunkeringsuppgifter – för att effektivt minska eller begränsa datastorleken – i Python.

1. math.trunc()

Python matematiska bibliotek tillhandahåller flera funktioner för att arbeta med flytvärden, varav en är math.trunc() . Denna funktion returnerar det trunkerade värdet för en given float, tar effektivt bort dess bråkdel och lämnar bara heltalsdelen.

Här är ett exempel på hur du använder math.trunc() :

import math

number = 3.7
truncated_number = math.trunc(number)

print("Original number:", number)
print("Truncated number:", truncated_number)

Produktion:

3
3.7

math.trunc() avrundar talet mot noll. För positiva tal fungerar det som golvfunktionen och för negativa tal fungerar det som takfunktionen.

Truncate Float i Python: förklaras med exempel

2. math.floor() och math.ceil()

Förutom math.trunc() tillhandahåller matematikbiblioteket även funktioner för att avrunda tal på olika sätt, som funktionerna math.floor() och math.ceil() .

Funktionen math.floor () avrundar flyttalsvärden nedåt till närmaste heltal, medan math.ceil() avrundar uppåt till närmaste heltal.

import math

# Example using math.floor() function
x = 3.7
y = 9.2

floor_x = math.floor(x)
floor_y = math.floor(y)

print("Floor of x:", floor_x) 
print("Floor of y:", floor_y) 

Produktion:

Floor of x: 3
Floor of y: 9

Här är en illustration av math.floor() -funktionen

Truncate Float i Python: förklaras med exempel

Det här kodavsnittet visar användningen av funktionen math.ceil() :

import math

# Example usage of math.ceil()
x = 3.7
y = 9.2
z = -4.5

ceil_x = math.ceil(x)
ceil_y = math.ceil(y)
ceil_z = math.ceil(z)

# Output the results
print("Ceiling of", x, "is", ceil_x)
print("Ceiling of", y, "is", ceil_y)
print("Ceiling of", z, "is", ceil_z) 

Produktion:

Ceiling of 3.7 is 4
Ceiling of 9.2 is 10
Ceiling of -4.5 is -4

3. Flytande värdeomvandling med int()

Ett annat sätt att trunkera ett flytvärde är att använda den inbyggda int() -funktionen. När den skickas i en float kommer den att konvertera den till ett heltal genom att trunkera decimaldelen.

Detta tillvägagångssätt kan vara mer praktiskt för enkla trunkeringsfall, eftersom det inte kräver import av matematikbiblioteket.

float5 = 7.65
float6 = -3.14

print(int(float5)) 
print(int(float6)) 

Produktion:

7
-3

Det är dock viktigt att komma ihåg att funktionen int() inte är likvärdig med math.floor() eller math.ceil() , eftersom den bara trunkerar talet utan att ta hänsyn till dess tecken.

Här är illustrationen av ovanstående int() funktion för en float trunkering i en kodredigerare;

Truncate Float i Python: förklaras med exempel

Sammanfattningsvis erbjuder Python matematiska bibliotek flera funktioner för att arbeta med flytvärden, inklusive trunkering, avrundning nedåt och avrundning uppåt. Matematikbiblioteket är ett viktigt verktyg att lita på när du behöver utföra avancerade matematiska operationer.

Medan funktionerna int() och math.trunc() erbjuder enkla sätt att trunkera flyttalsvärden, ger decimalmodulen ett kraftfullare och mer exakt tillvägagångssätt, så låt oss utforska det i nästa avsnitt.

Hur man trunkerar värden i Python med decimalmodulen

Pythons "decimal"-modul är ett kraftfullt verktyg som erbjuder precisionshantering av decimaltal, en funktion som är särskilt praktisk när trunkering behövs.

Det här avsnittet dyker ner i de praktiska tillämpningarna av denna modul för trunkering av värden i Python. Vi kommer att utforska steg-för-steg-exempel och ge en djupgående förståelse för koncepten bakom denna effektiva och exakta datamanipuleringsteknik.

1. Använda kvantiseringsmetoden

Kvantiseringsmetoden för klassen Decimal är ett mångsidigt verktyg för att trunkera decimalinstanser . Denna metod tillåter utvecklare att ställa in önskad precision och avrundningsläge, vilket säkerställer korrekt trunkering.

Tänk på följande exempel:

from decimal import Decimal, ROUND_DOWN 
number = Decimal('3.14159') 
truncated = number.quantize(Decimal('1.'), rounding=ROUND_DOWN) print(truncated)

Produktion:

3

I det här exemplet tillämpas kvantiseringsmetoden på decimalinstansnumret med en precision på en decimal och avrundningsläget ROUND_DOWN , som effektivt trunkerar värdet.

2. Använda metoden to_integral_value

En annan användbar metod som tillhandahålls av klassen Decimal är to_integral_value . Denna metod returnerar närmaste heltal till det givna decimalvärdet, vilket effektivt trunkerar decimalerna.

Metoden to_integral_value tillåter utvecklare att specificera avrundningsläget också.

Här är ett exempel:

from decimal import Decimal, ROUND_DOWN 
number = Decimal('3.14159') 
truncated = number.to_integral_value(rounding=ROUND_DOWN) print(truncated)

Produktion:

3

I det här exemplet används metoden to_integral_value med avrundningsläget ROUND_DOWN , vilket resulterar i trunkering.

3. Använda normaliseringsmetoden

Normaliseringsmetoden för klassen Decimal ger ett sätt att justera exponenten och skalan för en decimalinstans . Genom att använda denna metod kan utvecklare effektivt trunkera decimalerna.

Tänk på följande exempel:

from decimal import Decimal 
number = Decimal('3.14159') 
truncated = number.normalize() 
print(truncated)

Produktion:

3.14159

I det här exemplet tillämpas normaliseringsmetoden på decimalinstansnumret , vilket resulterar i samma värde utan några decimaler .

Låt oss sedan titta på hur du kan trunkera strängar och listor i Python.

Trunkeringstekniker för strängar och listor i Python

I det här avsnittet kommer vi att diskutera olika tekniker för att trunkera strängar och listor i Python-funktioner. Vi kommer att täcka följande underavsnitt: tekniker för avkortning av strängar och trunkering av listor .

1. Strängavkortningstekniker

Det finns flera sätt att trunkera en i Python, inklusive användningen av str.format , slicing och f-strings .

1) Använda str.format : Denna metod låter dig trunkera en sträng genom att ange ett precisionsvärde. Till exempel:

truncated_string = '{:.5}'.format('aaabbbccc')
print(truncated_string) 

Produktion:

aaabb

2) Använda skivning : Genom att använda skivnotation kan du välja en delsträng av den ursprungliga strängen. Till exempel:

my_string = 'aaabbbccc'
truncated_string = my_string[:5]
print(truncated_string)

Produktion:

aaabb

3) Använda f-strängar : Med f-strängar kan trunkeringen utföras inline i strängen. Till exempel:

my_string = 'aaabbbccc'
truncated_string = f'{my_string[:5]}'
print(truncated_string)

Produktion:

aaabb

2. Lista trunkering

Det finns flera sätt att trunkera listor i Python, som att skära och använda listförståelse.

1) Använda skivning : Med skivning kan du välja en rad element i en lista. Till exempel:

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
truncated_list = my_list[:5]
print(truncated_list)

Produktion:

[1, 2, 3, 4, 5]

2) Använda listförståelse : Listförståelse låter dig skapa en ny lista genom att iterera över en befintlig lista och tillämpa ett villkor eller en operation. Till exempel, för att trunkera tupler i en lista:

my_list = [('apple', 3), ('orange', 5), ('banana', 2)]
truncated_list = [(fruit, count) for fruit, count in my_list if count < 5]
print(truncated_list)

Produktion:

[('apple', 3), ('banana', 2)]

Nu när vi har täckt de olika teknikerna för att trunkera strängar och listor med Python, låt oss ta en titt på hur du kan göra samma sak med hjälp av bibliotek som NumPy och pandor.

Hur man använder NumPy och pandor för att trunkera värden i Python

When it comes to numerical and data analysis in Python, the names ‘NumPy’ and ‘pandas’ undoubtedly resonate among developers. These powerful libraries have transformed the landscape of data manipulation by providing extensive functionality for array processing, data handling, and much more.

In this section, we’ll explore common ways to truncate elements in Python using NumPy and pandas DataFrames.

1. Truncation in Python Using NumPy

NumPy offers a simple, built-in function called trunc which allows you to truncate values to the nearest whole number.

The trunc function eliminates the fractional part of the input, returning only the integer.

import numpy as np

values = np.array([1.234, 5.678, 9.012])
truncated_values = np.trunc(values)
print(truncated_values)

Output:

array([1., 5., 9.])

Here are some key points about the trunc function:

  • It works element-wise, meaning it can truncate each element in an array or a list.

  • The data type (dtype) of the output array will be the same as the input array.

  • The function can be applied to different data structures, such as , tuples, or arrays, as long as the elements are numeric.

2. Using DataFrame and Loc for Truncation in Python

Pandas DataFrame is a powerful, flexible data structure for handling large, structured datasets. You can use the DataFrame.truncate() function to truncate a DataFrame based on the index.

To see a practical demonstration of how to load datasets in Python, watch this YouTube video:

Alternatively, you can use the loc property to filter rows or columns based on a specific condition.

import pandas as pd

data = {'A': [1.234, 5.678, 9.012], 'B': [4.567, 8.901, 2.345]}
df = pd.DataFrame(data)

# Truncating based on the index
truncated_df = df.truncate(before=1, after=2)
print(truncated_df)

Output:

       A      B
1  5.678  8.901
2  9.012  2.345

Med hjälp av loc och ett villkor kan vi även uppnå trunkering baserat på värden:

# Condition to truncate values in column 'A'
condition = (df['A'] < 6)

# Truncating DataFrame based on condition
truncated_df = df.loc[condition]
print(truncated_df)

Produktion:

       A      B
0  1.234  4.567
1  5.678  8.901

I det här exemplet användes ett booleskt villkor för att filtrera bort rader i DataFrame. Beroende på ditt användningsfall kan du tillämpa olika villkor och operationer med loc .

Låt oss nu titta på de praktiska tillämpningarna av trunkering i Python.

3 Praktiska tillämpningar av trunkering i Python

Att förstå begreppet trunkering i Python och dess motsvarande tekniker är bara hälften av ekvationen. Den andra hälften handlar om att tillämpa denna kunskap effektivt i praktiska scenarier.

I det här avsnittet går vi över från teori till praktik, och illustrerar hur trunkering kan användas för att optimera Python-kod i verkliga applikationer.

Trunkering är användbart i olika applikationer, varav några är:

1. Finansiella beräkningar : När man arbetar med valutor är det vanligt att trunkera decimalvärden för att representera faktiska pengar där endast cent beaktas och mindre enheter inte är relevanta.

price = 49.987
truncated_price = int(price * 100) / 100
print(truncated_price)

Produktion:

49.98

2. Dataaggregering : Trunkering kan också användas för att aggregera data enligt ett specifikt kriterium. Till exempel att aggregera medelvärdet för dagliga temperaturavläsningar baserat på heltalsvärden.

temperature_data = [22.3, 23.9, 24.8, 23.4, 22.7, 24.1, 24.6]
truncated_temperature = [int(temp) for temp in temperature_data]
mean_temperature = sum(truncated_temperature) / len(truncated_temperature)
print(mean_temperature)

Produktion:

23.142857142857142

3. Beställning av element : Ibland måste element beställas baserat på en specifik trunkeringsregel. Detta kan uppnås genom att använda nyckelparametern i Pythons sorted() funktion.

data = [4.8, 3.2, 2.9, 7.5, 6.1, 9.0, 1.5]
sorted_data = sorted(data, key=lambda x: int(x))
print(sorted_data)

Produktion:

[1.5, 2.9, 3.2, 4.8, 6.1, 7.5, 9.0]

Dessa verkliga tillämpningar av trunkering visar att det är ovärderligt inom olika områden, såsom dataanalys och maskininlärning.

Ändå uppstår en viktig fråga: hur jämför trunkeringstekniker och vilken metod ska du använda för ett givet scenario? För att besvara detta kommer vårt nästa avsnitt att dyka ner i en jämförande analys av de olika trunkeringsmetoderna vi har diskuterat.

Jämföra trunkeringsmetoder i Python

För att jämföra de olika trunkeringsmetoderna när det gäller prestanda och precision, låt oss överväga en stor datamängd och mäta exekveringstiden för varje tillvägagångssätt.

import random
import time
from decimal import Decimal, ROUND_DOWN
import math

# Generate a large dataset of floating-point values
data = [random.uniform(0, 1000) for _ in range(10**6)]

# Using int function
start_time = time.time()
truncated_int = [int(number) for number in data]
int_execution_time = time.time() - start_time

# Using math.trunc function
start_time = time.time()
truncated_math = [math.trunc(number) for number in data]
math_execution_time = time.time() - start_time

# Using decimal module
start_time = time.time()
truncated_decimal = [Decimal(str(number)).quantize(Decimal('1.'), rounding=ROUND_DOWN) for number in data]
decimal_execution_time = time.time() - start_time

print(f"Execution time using int function: {int_execution_time:.5f} seconds")
print(f"Execution time using math.trunc function: {math_execution_time:.5f} seconds")
print(f"Execution time using decimal module: {decimal_execution_time:.5f} seconds")

I det här exemplet genereras en datauppsättning med en miljon slumpmässiga flyttalsvärden mellan 0 och 1000. Exekveringstiden för varje trunkeringsmetod mäts med hjälp av tidsmodulen. Decimalmodulmetoden konverterar varje nummer till en decimalinstans före trunkering för att säkerställa korrekta resultat.

Genom att köra koden kan du observera exekveringstiderna för varje metod och göra en prestandajämförelse.

Att välja lämplig trunkeringsmetod

När det gäller att trunkera flyttalsvärden i Python beror valet av lämplig metod på de specifika kraven för applikationen eller användningsfallet.

Tänk på följande faktorer när du bestämmer vilken metod du ska använda:

  • Precision: Om precision är av yttersta vikt och du behöver fin kontroll över decimaler, ger decimalmodulen den högsta nivån av noggrannhet.

  • Prestanda: För enkel trunkering utan behov av hög precision erbjuder int() -funktionen och math.trunc() -funktionen effektiva lösningar.

  • Avrundningsbeteende: Beroende på det önskade avrundningsbeteendet låter decimalmodulen dig specificera olika avrundningslägen, såsom ROUND_DOWN , ROUND_UP , ROUND_HALF_UP , och mer.

  • Kompatibilitet: Om du behöver säkerställa kompatibilitet med äldre kod eller system som inte stöder decimalmodulen, kan int()- funktionen eller math.trunc -funktionen vara genomförbara alternativ.

Slutgiltiga tankar

Truncate Float i Python: förklaras med exempel

Att förstå grunderna för trunkering av flytvärden i Python är avgörande för korrekt datamanipulation och analys. Python tillhandahåller olika metoder och funktioner för att trunkera eller runda flyttalstal baserat på specifika krav.

Genom att använda de inbyggda funktionerna som math.trunc() , math.floor() och math.ceil() , kan vi utföra trunkeringsoperationer effektivt. Dessa funktioner erbjuder flexibilitet vid hantering av positiva och negativa flytvärden, vilket gör att vi kan kontrollera det önskade resultatet.

Dessutom erbjuder decimalmodulen bättre kontroll över avrundning och precision, vilket gör den lämplig för ekonomiska beräkningar eller situationer där noggrannhet är av största vikt.

Som med alla programmeringskoncept är övning och experimentering nyckeln till att bemästra konsten att trunkera flytvärden. Fortsätt och tillämpa dessa tekniker i verkliga scenarier och utforska ytterligare resurser, såsom Python-dokumentation och community-forum, för att förbättra din förståelse och skicklighet!


Upptäck unika insikter med LuckyTemplates TOPN-funktion

Upptäck unika insikter med LuckyTemplates TOPN-funktion

Den här bloggen innehåller LuckyTemplates TOPN DAX-funktion, som gör att du kan få unika insikter från dina data, vilket hjälper dig att fatta bättre marknadsföringsbeslut.

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Datamodellering i LuckyTemplates med hjälp av stödtabeller

Lär dig några fantastiska analytiska tekniker som vi kan göra för datamodellering i LuckyTemplates med hjälp av DAX-stödtabeller.

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Avancerad DAX för LuckyTemplates: Implementering av rankningslogik över unika insikter

Här dyker vi in ​​i LuckyTemplates Advanced DAX och implementerar rankningslogik för att få en mycket unik insikt. Jag visar också upp måttförgrening i det här exemplet.

LuckyTemplates What-If-parameterfunktion

LuckyTemplates What-If-parameterfunktion

Den här bloggen introducerar den nya funktionen i LuckyTemplates, analysparametern What-If. Du kommer att se hur det gör allt snabbt och enkelt för din scenarioanalys.

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Använd LuckyTemplates Mät förgreningar för att kontrollera om dina marginaler ökar när intäkterna växer

Lär dig hur du avgör om din intäktstillväxt är bra genom att kontrollera om dina marginaler ökade med hjälp av LuckyTemplates mäter förgrening.

LuckyTemplates parametrar via frågeredigerare

LuckyTemplates parametrar via frågeredigerare

Lär dig och förstå hur du kan skapa och använda LuckyTemplates-parametrar som är en kraftfull funktion i frågeredigeraren.

Runda stapeldiagram – En visualisering för din instrumentpanel

Runda stapeldiagram – En visualisering för din instrumentpanel

Denna handledning kommer att diskutera hur man skapar ett runt stapeldiagram med Charticulator. Du kommer att lära dig hur du designar dem för din LuckyTemplates-rapport.

PowerApps funktioner och formler | En introduktion

PowerApps funktioner och formler | En introduktion

Lär dig hur du använder PowerApps funktioner och formler för att förbättra funktionaliteten och ändra ett beteende i vår Power Apps canvas-app.

Pipe In R: Anslutningsfunktioner med Dplyr

Pipe In R: Anslutningsfunktioner med Dplyr

I den här handledningen kommer du att lära dig hur du kopplar ihop funktioner med hjälp av dplyr-röroperatorn i programmeringsspråket R.

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX Deep Dive: A Lucky Templates DAX-funktion

RANKX från LuckyTemplates låter dig returnera rankningen av ett specifikt nummer i varje tabellrad som utgör en del av en lista med nummer.