Przejdź do treści stopki
POMOC .NET

C# Math (jak to działa dla programistów)

C# jest jednym z popularnych języków programowania do budowania dynamicznych i skalowalnych aplikacji. Jedną z zalet tego języka jest jego obszerna biblioteka wbudowanych funkcji, w szczególności funkcji matematycznych. W tym samouczku szczegółowo omówimy różne funkcje matematyczne dostępne w C#, pomagając Ci zapoznać się z klasą Math i łatwo wykonywać powszechne równania matematyczne.

Pierwsze kroki

W C# klasa Math jest klasą statyczną dostępną w przestrzeni nazw System. Ta klasa zawiera mnóstwo metod zaprojektowanych, aby pomóc deweloperom w przeprowadzaniu operacji matematycznych bez potrzeby pisania ich od zera.

Jak uzyskać dostęp do klasy Math

Aby uzyskać dostęp do klasy Math, należy włączyć przestrzeń nazw System w swojej publicznej klasie Program. Oto jak to zrobić:

using System;

public class Program
{
    // Entry point of the program
    public static void Main()
    {
        // Your code goes here
    }
}
using System;

public class Program
{
    // Entry point of the program
    public static void Main()
    {
        // Your code goes here
    }
}
Imports System

Public Class Program
	' Entry point of the program
	Public Shared Sub Main()
		' Your code goes here
	End Sub
End Class
$vbLabelText   $csharpLabel

W metodzie public static void Main można wywołać dowolną funkcję z klasy Math, odwołując się do Math. i używając parametru wyniku, który również może być liczbą zmiennoprzecinkową.

Podstawowe funkcje matematyczne

Spójrzmy na niektóre podstawowe funkcje matematyczne, które oferuje C#:

Wartość bezwzględna: Wartość bezwzględna wskazanej liczby to jej wartość bez znaku. Funkcja Math.Abs() przyjmuje liczbę i zwraca jej wartość bezwzględną.

double val = -10.5;
double absValue = Math.Abs(val); // Function returns absolute value
Console.WriteLine(absValue); // Output: 10.5
double val = -10.5;
double absValue = Math.Abs(val); // Function returns absolute value
Console.WriteLine(absValue); // Output: 10.5
Dim val As Double = -10.5
Dim absValue As Double = Math.Abs(val) ' Function returns absolute value
Console.WriteLine(absValue) ' Output: 10.5
$vbLabelText   $csharpLabel

Pierwiastek kwadratowy: Aby znaleźć pierwiastek kwadratowy wskazanej liczby, użyj funkcji Math.Sqrt(). Ta funkcja oblicza pierwiastek kwadratowy i zwraca wartość zmiennoprzecinkową, jak pokazano w poniższym przykładzie:

double value = 16;
double sqrtValue = Math.Sqrt(value);
Console.WriteLine(sqrtValue); // Output: 4
double value = 16;
double sqrtValue = Math.Sqrt(value);
Console.WriteLine(sqrtValue); // Output: 4
Dim value As Double = 16
Dim sqrtValue As Double = Math.Sqrt(value)
Console.WriteLine(sqrtValue) ' Output: 4
$vbLabelText   $csharpLabel

Zaokrąglanie liczb: C# oferuje kilka funkcji do zaokrąglania liczb do najbliższej liczby całkowitej lub wskazanej liczby miejsc dziesiętnych. Funkcja Math.Round() zaokrągla wartość zmiennoprzecinkową do najbliższej liczby całkowitej:

double value = 10.75;
double roundedValue = Math.Round(value); // Rounds to the nearest whole number
Console.WriteLine(roundedValue); // Output: 11
double value = 10.75;
double roundedValue = Math.Round(value); // Rounds to the nearest whole number
Console.WriteLine(roundedValue); // Output: 11
Dim value As Double = 10.75
Dim roundedValue As Double = Math.Round(value) ' Rounds to the nearest whole number
Console.WriteLine(roundedValue) ' Output: 11
$vbLabelText   $csharpLabel

Funkcje trygonometryczne i hiperboliczne

Oprócz podstawowych operacji arytmetycznych klasa Math w C# oferuje również szereg funkcji trygonometrycznych i hiperbolicznych.

Wartość funkcji sinus: Aby znaleźć wartość funkcji sinus określonego kąta (w radianach), użyj Math.Sin().

double angle = Math.PI / 2; // 90 degrees in radians
double sineValue = Math.Sin(angle);
Console.WriteLine(sineValue); // Output: 1
double angle = Math.PI / 2; // 90 degrees in radians
double sineValue = Math.Sin(angle);
Console.WriteLine(sineValue); // Output: 1
Dim angle As Double = Math.PI / 2 ' 90 degrees in radians
Dim sineValue As Double = Math.Sin(angle)
Console.WriteLine(sineValue) ' Output: 1
$vbLabelText   $csharpLabel

Funkcje hiperboliczne: Są one podobne do funkcji trygonometrycznych, ale są używane do równań hiperbolicznych. Kilka przykładów to Math.Sinh() (sinus hiperboliczny), Math.Cosh() (cosinus hiperboliczny) i Math.Tanh() (tangens hiperboliczny).

double value = 1;
double hyperbolicSine = Math.Sinh(value);
double hyperbolicCosine = Math.Cosh(value);
double hyperbolicTangent = Math.Tanh(value);
double value = 1;
double hyperbolicSine = Math.Sinh(value);
double hyperbolicCosine = Math.Cosh(value);
double hyperbolicTangent = Math.Tanh(value);
Dim value As Double = 1
Dim hyperbolicSine As Double = Math.Sinh(value)
Dim hyperbolicCosine As Double = Math.Cosh(value)
Dim hyperbolicTangent As Double = Math.Tanh(value)
$vbLabelText   $csharpLabel

Zaawansowane funkcje matematyczne

Dla tych, którzy szukają bardziej zaawansowanych operacji:

Potęga: Funkcja Math.Pow() przyjmuje dwie liczby zmiennoprzecinkowe: podstawę i wykładnik. Zwraca ona liczbę podstawową podniesioną do określonej potęgi.

double baseNum = 2;
double exponent = 3;
double result = Math.Pow(baseNum, exponent);
Console.WriteLine(result); // Output: 8
double baseNum = 2;
double exponent = 3;
double result = Math.Pow(baseNum, exponent);
Console.WriteLine(result); // Output: 8
Dim baseNum As Double = 2
Dim exponent As Double = 3
Dim result As Double = Math.Pow(baseNum, exponent)
Console.WriteLine(result) ' Output: 8
$vbLabelText   $csharpLabel

Logarytm: C# oferuje funkcję Math.Log(), która oblicza logarytm naturalny (podstawy e) wskazanej liczby. Dodatkowo można określić podstawę przy użyciu Math.Log(number, specified base).

double value = 10;
double naturalLog = Math.Log(value); // Natural logarithm base e
double logBase10 = Math.Log(value, 10); // Base 10 logarithm
double value = 10;
double naturalLog = Math.Log(value); // Natural logarithm base e
double logBase10 = Math.Log(value, 10); // Base 10 logarithm
Dim value As Double = 10
Dim naturalLog As Double = Math.Log(value) ' Natural logarithm base e
Dim logBase10 As Double = Math.Log(value, 10) ' Base 10 logarithm
$vbLabelText   $csharpLabel

Liczby zespolone w C

Chociaż ten samouczek dotyczy głównie funkcji podstawowych i średnio zaawansowanych, warto zauważyć, że C# oferuje wsparcie dla liczb zespolonych.

Tworzenie liczby zespolonej: Użyj klasy Complex z przestrzeni nazw System.Numerics. Nie jest ona częścią klasy Math, ale jest niezbędna do operacji matematycznych z udziałem liczb zespolonych.

using System.Numerics;

Complex complexNumber = new Complex(2, 3); // Represents 2 + 3i
using System.Numerics;

Complex complexNumber = new Complex(2, 3); // Represents 2 + 3i
Imports System.Numerics

Private complexNumber As New Complex(2, 3) ' Represents 2 + 3i
$vbLabelText   $csharpLabel

Funkcje konwersji w klasie Math

Często deweloperzy muszą konwertować pomiędzy różnymi typami wartości liczbowych:

Konwersja na liczbę całkowitą: Jeśli masz liczbę zmiennoprzecinkową i chcesz ją przekonwertować na liczbę całkowitą, usuwając jej wartość dziesiętną, użyj metody Convert.ToInt32().

double value = 10.99;
int intValue = Convert.ToInt32(value);
Console.WriteLine(intValue); // Output: 11 (rounds 10.99 to the nearest integer)
double value = 10.99;
int intValue = Convert.ToInt32(value);
Console.WriteLine(intValue); // Output: 11 (rounds 10.99 to the nearest integer)
Dim value As Double = 10.99
Dim intValue As Integer = Convert.ToInt32(value)
Console.WriteLine(intValue) ' Output: 11 (rounds 10.99 to the nearest integer)
$vbLabelText   $csharpLabel

Dziesiętny na binarny: C# nie ma bezpośredniej metody w klasie Math do tego celu. Możesz jednak użyć funkcji Convert.ToString(value, 2) z przestrzeni nazw System.

int value = 42;
string binary = Convert.ToString(value, 2); // Converts 42 to binary
Console.WriteLine(binary); // Output: 101010
int value = 42;
string binary = Convert.ToString(value, 2); // Converts 42 to binary
Console.WriteLine(binary); // Output: 101010
Dim value As Integer = 42
Dim binary As String = Convert.ToString(value, 2) ' Converts 42 to binary
Console.WriteLine(binary) ' Output: 101010
$vbLabelText   $csharpLabel

Błędy i obsługa wyjątków w funkcjach matematycznych

Podczas korzystania z funkcji matematycznych czasami można napotkać błędy, takie jak dzielenie przez zero. Ważne jest, aby radzić sobie z tymi potencjalnymi pułapkami:

Dzielenie przez zero: Użyj instrukcji warunkowej, aby sprawdzić dzielnik przed wykonaniem dzielenia.

double numerator = 10;
double denominator = 0;

if (denominator != 0)
{
    double result = numerator / denominator;
    Console.WriteLine(result);
}
else
{
    Console.WriteLine("Cannot divide by zero!");
}
double numerator = 10;
double denominator = 0;

if (denominator != 0)
{
    double result = numerator / denominator;
    Console.WriteLine(result);
}
else
{
    Console.WriteLine("Cannot divide by zero!");
}
Dim numerator As Double = 10
Dim denominator As Double = 0

If denominator <> 0 Then
	Dim result As Double = numerator / denominator
	Console.WriteLine(result)
Else
	Console.WriteLine("Cannot divide by zero!")
End If
$vbLabelText   $csharpLabel

Obsługa przepełnienia: Kiedy operacja matematyczna prowadzi do wyniku zbyt dużego dla jego typu danych, następuje przepełnienie. Użyj bloków checked, aby wychwycić ten wyjątek.

try
{
    checked
    {
        int result = checked(int.MaxValue + 1); // This will cause an overflow
    }
}
catch (OverflowException ex)
{
    Console.WriteLine("Overflow occurred: " + ex.Message);
}
try
{
    checked
    {
        int result = checked(int.MaxValue + 1); // This will cause an overflow
    }
}
catch (OverflowException ex)
{
    Console.WriteLine("Overflow occurred: " + ex.Message);
}
Try
'INSTANT VB TODO TASK: There is no equivalent to a 'checked' block in VB:
'	checked
'INSTANT VB TODO TASK: There is no VB equivalent to 'checked' in this context:
'ORIGINAL LINE: int result = checked(int.MaxValue + 1);
		Dim result As Integer = Integer.MaxValue + 1 ' This will cause an overflow
'INSTANT VB TODO TASK: End of the original C# 'checked' block.
Catch ex As OverflowException
	Console.WriteLine("Overflow occurred: " & ex.Message)
End Try
$vbLabelText   $csharpLabel

Wprowadzenie do Iron Suite: Potężnego zestawu dla programistów C

Jak zagłębiamy się w możliwości C#, warto zauważyć, że ekosystem wokół tego języka programowania bardzo się rozwijał. Jednym z takich wkładów jest Iron Suite, wszechstronny zestaw narzędzi dostosowany do programistów C#. Oferuje on zestaw produktów, które mogą wzmocnić twoje aplikacje, zapewniając, że są one solidne i bogate w funkcje.

IronPDF

C# Math (Jak to działa dla deweloperów) Rysunek 1 - IronPDF

Czy kiedykolwiek czułeś potrzebę pracy z plikami PDF w swoich aplikacjach C#? IronPDF for PDF Integration in C# Applications jest twoim głównym rozwiązaniem. Umożliwia on niezwykle łatwe tworzenie, edytowanie, a nawet wyodrębnianie zawartości z plików PDF. Kiedy połączysz to z funkcjami matematycznymi C#, możesz generować raporty, wykresy i inne wizualizacje matematyczne oraz bezproblemowo osadzać je w swoich dokumentach PDF.

Charakterystyczną cechą IronPDF jest jego HTML to PDF Conversion Feature, zachowującą wszystkie układy i style. Generuje pliki PDF na podstawie treści internetowych, odpowiednie do raportów, faktur i dokumentacji. Pliki HTML, adresy URL i ciągi znaków HTML można bez trudu konwertować do formatu PDF.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' 1. Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' 2. Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' 3. Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

IronXL

C# Math (Jak to działa dla deweloperów) Rysunek 2 - IronXL

Manipulacja danymi jest istotnym aspektem programowania, a jeśli chodzi o arkusze kalkulacyjne, IronXL for Excel Interop in C# pokrywa potrzeby. Niezależnie od tego, czy tworzysz, odczytujesz, czy edytujesz pliki Excel, IronXL integruje się bezproblemowo z C#. Dzięki mocy funkcji matematycznych C# możesz wykonywać obliczenia na swoich danych Excel bezpośrednio w ramach aplikacji.

IronOCR

C# Math (Jak to działa dla deweloperów) Rysunek 3 - IronOCR

Optical Character Recognition (OCR) nie jest już futurystycznym konceptem, ale rzeczywistością dzięki IronOCR for Extracting Text from Images and PDFs. Jeśli masz aplikację zajmującą się obrazami lub skanowanymi dokumentami i chcesz wyodrębnić tekst, zwłaszcza dane liczbowe lub równania matematyczne, IronOCR w połączeniu z C# może bezproblemowo rozpoznać i przetłumaczyć je na dane użyteczne.

IronBarcode

C# Math (Jak to działa dla deweloperów) Rysunek 4 - IronBarcode

W dzisiejszym świecie kody kreskowe odgrywają integralną rolę w identyfikacji produktów. Z IronBarcode for Generating and Reading Barcodes in C#, deweloperzy C# mogą łatwo generować, odczytywać i pracować z kodami kreskowymi. Może to być szczególnie użyteczne, jeśli rozwijasz systemy magazynowe lub sprzedażowe, gdzie obliczenia matematyczne i kody kreskowe się przeplatają.

Wnioski

C# Math (Jak to działa dla deweloperów) Rysunek 5 - Licencja

Środowisko C# jest ogromne i potężne, a dzięki narzędziom takim jak Iron Suite możesz podnieść swoje aplikacje na nowe wyżyny. Każdy produkt w ramach Iron Suite, czy to IronPDF, IronXL, IronOCR, czy IronBarcode, zaczyna się od licencji zaczynającej się od $799. Ponadto, dla tych, którzy chcą spróbować przed inwestycją, każdy produkt oferuje 30-dniowy okres próbny dla szerokich funkcji Iron Suite za cenę zaledwie dwóch produktów. Taka okazja nie tylko oferuje oszczędności kosztów, ale także zapewnia wszechstronny zestaw narzędzi do spełnienia różnych potrzeb rozwojowych.

Często Zadawane Pytania

Jak mogę wykonywać podstawowe operacje arytmetyczne za pomocą klasy Math w C#?

Klasa Math w C# udostępnia metody takie jak Math.Abs() do obliczania wartości absolutnej, Math.Sqrt() do obliczania pierwiastka kwadratowego i Math.Round() do zaokrąglania liczb. Te metody upraszczają podstawowe operacje arytmetyczne bez konieczności pisania złożonych algorytmów.

Jakie zaawansowane funkcje matematyczne są dostępne w klasie Math C#?

Dla zaawansowanych operacji matematycznych klasa Math C# oferuje metody takie jak Math.Pow() do obliczeń potęgowych i Math.Log() do operacji logarytmicznych. Te funkcje pozwalają programistom na efektywne wykonywanie złożonych obliczeń.

Jak mogę obsługiwać błędy dzielenia przez zero w C#?

Aby obsłużyć dzielenie przez zero w C#, użyj instrukcji warunkowych, aby sprawdzić, czy dzielnik jest zerowy przed wykonaniem dzielenia. Alternatywnie, zaimplementuj blok try-catch, aby zarządzać wyjątkami, które mogą wystąpić podczas operacji dzielenia.

Jak mogę zintegrować funkcjonalności PDF w mojej aplikacji C#?

IronPDF umożliwia programistom C# tworzenie, modyfikowanie i konwertowanie treści do plików PDF bez problemów. Z użyciem IronPDF możesz generować raporty i wizualizować dane matematyczne w formacie PDF bezpośrednio z aplikacji C#.

Jakie są opcje manipulacji plikami Excel w C#?

IronXL pozwala programistom C# programowo tworzyć, czytać i edytować pliki Excel. Integruje się gładko z aplikacjami C#, umożliwiając obliczenia i manipulację danymi wewnątrz arkuszy Excel.

Jak można wyodrębnić tekst z obrazów w C#?

IronOCR jest potężnym narzędziem do wyodrębniania tekstu z obrazów w C#. Potrafi dokładnie rozpoznawać i konwertować tekst oraz dane liczbowe z zeskanowanych dokumentów, wzbogacając aplikacje wymagające optycznego rozpoznawania znaków.

Czy istnieje sposób na generowanie i odczytywanie kodów kreskowych w C#?

Tak, IronBarcode pozwala programistom C# łatwo generować i odczytywać różne rodzaje kodów kreskowych. Ta funkcjonalność jest szczególnie użyteczna w aplikacjach do zarządzania zapasami lub systemach sprzedaży, gdzie skanowanie kodów kreskowych jest niezbędne.

Jakie zalety oferuje Iron Suite programistom C#?

Iron Suite zapewnia kompleksowy zestaw narzędzi, w tym IronPDF, IronXL, IronOCR i IronBarcode, które wzmacniają możliwości aplikacji C#. Oferuje 30-dniowy darmowy okres testowy, umożliwiając programistom testowanie i integrację tych funkcjonalności efektywnie kosztowo.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczą...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie