RMdev.Calculator 1.0.1

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package RMdev.Calculator --version 1.0.1                
NuGet\Install-Package RMdev.Calculator -Version 1.0.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RMdev.Calculator" Version="1.0.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RMdev.Calculator --version 1.0.1                
#r "nuget: RMdev.Calculator, 1.0.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install RMdev.Calculator as a Cake Addin
#addin nuget:?package=RMdev.Calculator&version=1.0.1

// Install RMdev.Calculator as a Cake Tool
#tool nuget:?package=RMdev.Calculator&version=1.0.1                

rmdev.Calculator

Biblioteca para calcular expressões matemáticas respeitando a prioridade dos operadores com suporte a variáveis, e funções personalizadas.

Tanto no nome das variáveis como no nome das funções maiúsculas e minusculas fazem diferença. (Case-Sensitive)

Números

O separador de decimal deve ser o ponto, independente de qual linguagem está sendo utilizada, não deve ser utilizado separador de milhar.

Constantes

  • PI = 3.14159265358979
  • E = 2.71828182845904

Variáveis

Variáveis podem ser declaradas usando letras, números, $ e underline, mas não podem começar com números nem conter acentuação.

Operadores

  • + Adição
  • - Subtração
  • * Multiplicação
  • / Divisão
  • % Resto da divisão
  • ^ Potenciação
  • ( e ) Priorização

Primeiro será calculado o que está entre parênteses,

seguido por potência,

depois multiplicações, divisões, e restos

e finalmente somas e subtrações.

Em caso de operações estarem no mesmo nível de prioridade, elas serão executadas da esquerda para a direita.

Funções

  • Root(radicando, indice) Enésima raiz de um número
  • Sqrt(radicando) Raiz quadrada de um número
  • Abs(V) Valor absoluto de V
  • Avg(V1, V2, ..., Vn ) Média dos valores
  • Sum(V1, V2, ..., Vn ) Soma dos valores
  • Round(V) Arredonda um número
  • Round(V, n) Arredonda um número para até n casas decimais
  • Truncate(V) Trunca um número
  • Ceiling(V) Arredonda um número para cima
  • Floor(V) Arredonda um número para baixo
  • Sin(V) Seno de V (em graus)
  • Cos(V) Coseno de V (em graus)
  • Tan(V) Tangente de V (em graus)
  • Max(V1, V2, ..., Vn ) Maior entre os valores informados
  • Min(V1, V2, ..., Vn ) Menor entre os valores informados

Os parâmetros devem ser separados por vírgula.

Funções Internacionalizadas

As mensagens de erro serão mostradas de acordo com a cultura da thread atual, mas para usar funções com seus nomes traduzidos é preciso informar a cultura ao criar um novo objeto Calc.

Português

  • Root → Raiz
  • Sqrt → RaizQuadrada
  • Abs → Abs
  • Avg → Media
  • Sum → Soma
  • Round → Arredondar
  • Truncate → Truncar
  • Ceiling → ArredondarParaCima
  • Floor → ArredondarParaBaixo
  • Sin → Seno
  • Cos → Coseno
  • Tan → Tangente
  • Max → Max
  • Min → Min

Para adicionar suporte a novos idiomas basta adicionar os resources correspondentes na pasta Resources.

Funções Personalizadas

Funções podem ser declaradas usando letras, números, $ e underline, mas não podem começar com números nem conter acentuação.

As funções devem seguir o delegate

delegate decimal CustomFunction(decimal[] parameters)

O array de parâmetros nunca será nulo, mas possivelmente será vazio.

Exemplo de função:

decimal Somar(decimal[] parameters){
    return parameters.Sum();
}

Funções personalizadas podem sobrescrever funções nativas, mas funções personalizadas não são verificadas semanticamente durante as análises feitas pelo método Calc.Check(). Exeções lançadas dentro de uma função personalizada só irão estourar quando o método Solve tentar resolver uma expressão com essa função.

Comentários e caracteres ignorados

Espaços em branco, tabulações e quebras de linha serão ignorados, o que permite escrever expressões com mais de uma linha.

Também é possível criar comentários de uma linha usando // ou comentários de bloco usando /* e */ para delimitar o início e o fim do bloco.

Exemplo

ICalc calc = new Calc();
calc.SetVariable("a", 10);
var result = calc.Solve("a + 2"); // result = 12
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.1

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.0.5 252 3/24/2023
1.0.1 225 3/23/2023
1.0.0 216 3/20/2023