{"id":37045115,"url":"https://github.com/matheval/expression-evaluator-c-sharp","last_synced_at":"2026-01-14T05:12:50.506Z","repository":{"id":37948882,"uuid":"389893844","full_name":"matheval/expression-evaluator-c-sharp","owner":"matheval","description":"Matheval is a mathematical expressions evaluator library written in C#. Allows to evaluate mathematical, boolean, string and datetime expressions","archived":false,"fork":false,"pushed_at":"2024-08-26T15:19:10.000Z","size":99,"stargazers_count":127,"open_issues_count":22,"forks_count":34,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-08-24T09:28:04.527Z","etag":null,"topics":["calculator","eval","evaluator","expression-evaluator","expresssion","fomular","math","mathematical-expressions-evaluator","mathematics"],"latest_commit_sha":null,"homepage":"https://matheval.org/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matheval.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-27T07:48:38.000Z","updated_at":"2025-07-09T07:09:38.000Z","dependencies_parsed_at":"2023-01-31T14:01:07.838Z","dependency_job_id":"e55b9bac-9905-4e6a-83ff-1d274c215a62","html_url":"https://github.com/matheval/expression-evaluator-c-sharp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matheval/expression-evaluator-c-sharp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheval%2Fexpression-evaluator-c-sharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheval%2Fexpression-evaluator-c-sharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheval%2Fexpression-evaluator-c-sharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheval%2Fexpression-evaluator-c-sharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matheval","download_url":"https://codeload.github.com/matheval/expression-evaluator-c-sharp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matheval%2Fexpression-evaluator-c-sharp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28410312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T01:52:23.358Z","status":"online","status_checked_at":"2026-01-14T02:00:06.678Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calculator","eval","evaluator","expression-evaluator","expresssion","fomular","math","mathematical-expressions-evaluator","mathematics"],"created_at":"2026-01-14T05:12:49.849Z","updated_at":"2026-01-14T05:12:50.497Z","avatar_url":"https://github.com/matheval.png","language":"C#","readme":"# About MathEval\n[![NuGet version (org.matheval)](https://img.shields.io/nuget/v/org.matheval.svg?style=flat-square)](https://www.nuget.org/packages/org.matheval/)\n\nMatheval is a mathematical expressions evaluator library written in C#. Allows to evaluate mathematical, boolean, string and datetime expressions\n\nCode is written in pure C#, run on the fly. We don't use any third party libraries or packages\n\nIf you get any bugs please let me know by creating a new issue.\n\n\n\n**Many thanks to our contributors:**\n\n[Thanhrin](https://github.com/ThanhRin) (from Da Nang, VietNam)\n\n[Eduardo Salinas](https://github.com/butulia) (from Huesca, Spain)\n\n# Installation\n\nUsing Package Manager\n\n```bash\nPM\u003e Install-Package org.matheval -Version 1.0.0.3\n```\n\n# Supported operators, contants, functions\n\n## Supported Operators\n\u003ctable\u003e\n\n\u003ctbody\u003e\n\n\u003ctr\u003e\n\n\u003cth\u003eOperator\u003c/th\u003e\n\n\u003cth\u003eDescription\u003c/th\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003e+\u003c/td\u003e\n\n\u003ctd\u003eAdditive operator / Unary plus / Concatenate string / Datetime addition\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003e\u0026\u003c/td\u003e\n\n\u003ctd\u003eConcatenate string\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003e–\u003c/td\u003e\n\n\u003ctd\u003eSubtraction operator / Unary minus / Datetime subtraction\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003e*\u003c/td\u003e\n\n\u003ctd\u003eMultiplication operator, can be omitted in front of an open bracket\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003e/\u003c/td\u003e\n\n\u003ctd\u003eDivision operator\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003e%\u003c/td\u003e\n\n\u003ctd\u003eRemainder operator (Modulo)\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003e^\u003c/td\u003e\n\n\u003ctd\u003ePower operator\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003c/tbody\u003e\n\n\u003c/table\u003e\n\n\n## Supported conditional statements\n\n\u003ctable\u003e\n\n\u003ctbody\u003e\n\n\u003ctr\u003e\n\n\u003cth\u003eConditional statement\u003c/th\u003e\n\n\u003cth\u003eDescription\u003c/th\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eIF(logical_condition, value_if_true, value_if_false)\u003c/td\u003e\n\n\u003ctd\u003eExample:  \n`IF(2\u003e1,\"Pass\",\"Fail\")`\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eSWITCH(expression, val1,result1, [val2,result2], …, [default])\u003c/td\u003e\n\n\u003ctd\u003eExample:  \n`SWITCH(3+2,5,\"Apple\",7,\"Mango\",3,\"Good\",\"N/A\")`\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003c/tbody\u003e\n\n\u003c/table\u003e\n\n## Supported logical and math functions\n\n\u003ctable\u003e\n\n\u003ctbody\u003e\n\n\u003ctr\u003e\n\n\u003cth\u003eFunction\u003csup\u003e*\u003c/sup\u003e\u003c/th\u003e\n\n\u003cth\u003eDescription\u003c/th\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eAND(logical1, [logical2], …)\u003c/td\u003e\n\n\u003ctd\u003eDetermine if all conditions are TRUE\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eOR(logical1, [logical2], …)\u003c/td\u003e\n\n\u003ctd\u003eDetermine if any conditions in a test are TRUE\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eNOT(_logical_)\u003c/td\u003e\n\n\u003ctd\u003eTo confirm one value is not equal to another\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eXOR(logical1, [logical2], …)\u003c/td\u003e\n\n\u003ctd\u003eExclusive OR function\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eSUM(number1, [number2],…)\u003c/td\u003e\n\n\u003ctd\u003eReturn sum of numbers supplied\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eAVERAGE(number1, [number2],…)\u003c/td\u003e\n\n\u003ctd\u003eReturn average of numbers supplied\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eMIN(number1, [number2],…)\u003c/td\u003e\n\n\u003ctd\u003eReturn the smallest value from the numbers supplied\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eMAX(number1, [number2],…)\u003c/td\u003e\n\n\u003ctd\u003eReturn the biggest value from the numbers supplied\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eMOD(number, divisor)\u003c/td\u003e\n\n\u003ctd\u003eGet remainder of two given numbers after division operator.\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eROUND(number, num_digits)\u003c/td\u003e\n\n\u003ctd\u003eReturns the rounded approximation of given number using half-even rounding mode  \n( you can change to another rounding mode)\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eFLOOR(number, significance)\u003c/td\u003e\n\n\u003ctd\u003eRounds a given number towards zero to the nearest multiple of a specified significance\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003e`CEILING`(number, significance)\u003c/td\u003e\n\n\u003ctd\u003eRounds a given number away from zero, to the nearest multiple of a given number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003ePOWER(number, power)\u003c/td\u003e\n\n\u003ctd\u003eReturns the result of a number raised to a given power\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eRAND()\u003c/td\u003e\n\n\u003ctd\u003eProduces a random number between 0 and 1\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eSIN(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the trigonometric sine of the angle given in radians\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eSINH(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the hyperbolic sine of a number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eASIN(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the arc sine of an angle, in the range of -pi/2 through pi/2\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eCOS(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the trigonometric cos of the angle given in radians\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eCOSH(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the hyperbolic cos of a number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eACOS(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the arc cosine of an angle, in the range of 0.0 through pi\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eTAN(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the tangent of the angle given in radians\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eTANH(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the hyperbolic tangent of a number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eATAN(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the arc tangent of an angle given in radians\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eATAN2(x_number, y_number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the arctangent from x- and y-coordinates\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eCOT(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the cotangent of an angle given in radians.\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eCOTH(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the hyperbolic cotangent of a number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eSQRT(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the correctly rounded positive square root of given number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eLN(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the natural logarithm (base _e_) of given number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eLOG10(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the logarithm (base 10) of given number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eEXP(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns e raised to the power of given number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eABS(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the absolute value of given number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eFACT(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the factorial of a given number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eSEC(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the secant of an angle given in radians\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eCSC(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the cosecant of an angle given in radians\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003ePI()\u003c/td\u003e\n\n\u003ctd\u003eReturn value of Pi\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eRADIANS(degrees)\u003c/td\u003e\n\n\u003ctd\u003eConvert degrees to radians\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eDEGREES(radians)\u003c/td\u003e\n\n\u003ctd\u003eConvert radians to degrees\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eINT(number)\u003c/td\u003e\n\n\u003ctd\u003eReturns the Integer value of given number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003c/tbody\u003e\n\n\u003c/table\u003e\n\n## Supported Constants\n\n\u003ctable\u003e\n\n\u003ctbody\u003e\n\n\u003ctr\u003e\n\n\u003cth\u003eConstant\u003c/th\u003e\n\n\u003cth\u003eDescription\u003c/th\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003ee\u003c/td\u003e\n\n\u003ctd\u003eThe value of _e_\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003ePI\u003c/td\u003e\n\n\u003ctd\u003eThe value of _PI_\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eTRUE\u003c/td\u003e\n\n\u003ctd\u003eThe boolean true value\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eFALSE\u003c/td\u003e\n\n\u003ctd\u003eThe boolean false value\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eNULL\u003c/td\u003e\n\n\u003ctd\u003eThe null value\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003c/tbody\u003e\n\n\u003c/table\u003e\n\n## Supported text functions\n\n\u003ctable\u003e\n\n\u003ctbody\u003e\n\n\u003ctr\u003e\n\n\u003cth\u003eFunction\u003c/th\u003e\n\n\u003cth\u003eDescription\u003c/th\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eLEFT(text, num_chars)\u003c/td\u003e\n\n\u003ctd\u003eExtracts a given number of characters from the left side of a supplied text string\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eRIGHT(text, num_chars)\u003c/td\u003e\n\n\u003ctd\u003eExtracts a given number of characters from the right side of a supplied text string\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eMID(text, start_num, num_chars)\u003c/td\u003e\n\n\u003ctd\u003eExtracts a given number of characters from the middle of a supplied text string\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eREVERSE(text)\u003c/td\u003e\n\n\u003ctd\u003eReverse a string\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eISNUMBER(text)\u003c/td\u003e\n\n\u003ctd\u003eCheck if a value is a number\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eLOWER(text)\u003c/td\u003e\n\n\u003ctd\u003eConverts all letters in the specified string to lowercase\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eUPPER(text)\u003c/td\u003e\n\n\u003ctd\u003eConverts all letters in the specified string to uppercase\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003ePROPER(text)\u003c/td\u003e\n\n\u003ctd\u003eCapitalizes words given text string\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eTRIM(text)\u003c/td\u003e\n\n\u003ctd\u003eRemoves extra spaces from text\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eLEN(text)\u003c/td\u003e\n\n\u003ctd\u003eReturns the length of a string/ text\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eTEXT(value, [format_text])\u003c/td\u003e\n\n\u003ctd\u003eConvert a numeric value into a text string. You can use the TEXT function to embed formatted numbers inside text  \nExample:  \n`\n\n\u003cdiv class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \"\u003e\u003cspan class=\"enlighter\"\u003e\u003cspan class=\"enlighter-m0\"\u003eTEXT\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-n1\"\u003e123\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e\u003e\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e\u003c/span\u003e \u003cspan class=\"enlighter-n1\"\u003e123\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\n\n`TEXT(123) -\u003e 123`  \n\n\u003cdiv class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \"\u003e\u003cspan class=\"enlighter\"\u003e\u003cspan class=\"enlighter-m0\"\u003eTEXT\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-m0\"\u003eDATEVALUE\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-s0\"\u003e\"2021-01-23\"\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-s0\"\u003e\"dd-MM-yyyy\"\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e\u003e\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e\u003c/span\u003e \u003cspan class=\"enlighter-n1\"\u003e23\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-n4\"\u003e01\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-n1\"\u003e2021\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\n\n`TEXT(DATEVALUE(\"2021-01-23\"),\"dd-MM-yyyy\") -\u003e 23-01-2021`  \n\n\u003cdiv class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \"\u003e\u003cspan class=\"enlighter\"\u003e\u003cspan class=\"enlighter-m0\"\u003eTEXT\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-n0\"\u003e2.61\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-s0\"\u003e\"hh:mm\"\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e\u003e\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e\u003c/span\u003e \u003cspan class=\"enlighter-n1\"\u003e14\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e:\u003c/span\u003e\u003cspan class=\"enlighter-n1\"\u003e38\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\n\n`TEXT(2.61,\"hh:mm\") -\u003e 14:38`  \n\n\u003cdiv class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \"\u003e\u003cspan class=\"enlighter\"\u003e\u003cspan class=\"enlighter-m0\"\u003eTEXT\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-n0\"\u003e2.61\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-s0\"\u003e\"[hh]\"\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e\u003e\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e\u003c/span\u003e \u003cspan class=\"enlighter-n1\"\u003e62\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\n\n`TEXT(2.61,\"[hh]\") -\u003e 62`  \n\n\u003cdiv class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \"\u003e\u003cspan class=\"enlighter\"\u003e\u003cspan class=\"enlighter-m0\"\u003eTEXT\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-n0\"\u003e2.61\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-s0\"\u003e\"hh-mm-ss\"\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e\u003e\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e\u003c/span\u003e \u003cspan class=\"enlighter-n1\"\u003e14\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-n1\"\u003e38\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-n1\"\u003e24\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\n\n`TEXT(2.61,\"hh-mm-ss\") -\u003e 14-38-24`  \n\n\u003cdiv class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \"\u003e\u003cspan class=\"enlighter\"\u003e\u003cspan class=\"enlighter-m0\"\u003eTEXT\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-m0\"\u003eDATEVALUE\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-s0\"\u003e\"2021-01-03\"\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-m0\"\u003eDATEVALUE\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-s0\"\u003e\"2021-01-01\"\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-s0\"\u003e\"[h]\"\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e\u003e\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e\u003c/span\u003e \u003cspan class=\"enlighter-n1\"\u003e48\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\n\n`TEXT(DATEVALUE(\"2021-01-03\")-DATEVALUE(\"2021-01-01\"),\"[h]\") -\u003e 48`  \n\n\u003cdiv class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \"\u003e\u003cspan class=\"enlighter\"\u003e\u003cspan class=\"enlighter-m0\"\u003eTEXT\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-m0\"\u003eTIME\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-n1\"\u003e12\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-n4\"\u003e00\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-n4\"\u003e00\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-m0\"\u003eTIME\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e(\u003c/span\u003e\u003cspan class=\"enlighter-n1\"\u003e10\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-n1\"\u003e30\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-n1\"\u003e10\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e\u003cspan class=\"enlighter-text\"\u003e,\u003c/span\u003e\u003cspan class=\"enlighter-s0\"\u003e\"hh hours and mm minutes and ss seconds\"\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e)\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e-\u003c/span\u003e\u003cspan class=\"enlighter-g1\"\u003e\u003e\u003c/span\u003e \u003cspan class=\"enlighter-text\"\u003e\u003c/span\u003e \u003cspan class=\"enlighter-s0\"\u003e\"01 hours and 29 minutes and 50 seconds\"\u003c/span\u003e\u003c/span\u003e\u003c/div\u003e\n\n`TEXT(TIME(12,00,00)-TIME(10,30,10),\"hh hours and mm minutes and ss seconds\") -\u003e \"01 hours and 29 minutes and 50 seconds\"``\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eREPLACE(old_text, start_num, num_chars, new_text)\u003c/td\u003e\n\n\u003ctd\u003eReplaces characters specified by location in a given text string with another text string\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eSUBSTITUTE(text, old_text, new_text)\u003c/td\u003e\n\n\u003ctd\u003eReplaces a set of characters with another\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eFIND(find_text, within_text, [start_num])\u003c/td\u003e\n\n\u003ctd\u003eReturns the location of a substring in a string (case sensitive)\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eSEARCH(find_text, within_text, [start_num])\u003c/td\u003e\n\n\u003ctd\u003eReturns the location of a substring in a string (case insensitive)\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eCONCAT(text1, text2, text3,…)\u003c/td\u003e\n\n\u003ctd\u003eCombines the text from multiple strings\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eISBLANK(text)\u003c/td\u003e\n\n\u003ctd\u003eReturns TRUE when a given string is null or empty, otherwise return FALSE\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eREPT(text, repeat_time)\u003c/td\u003e\n\n\u003ctd\u003eRepeats characters a given number of times\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eCHAR(char_code)\u003c/td\u003e\n\n\u003ctd\u003eReturn character from ascii code\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eCODE(char)\u003c/td\u003e\n\n\u003ctd\u003eReturns a ascii code of a character\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003ctr\u003e\n\n\u003ctd\u003eVALUE(text)\u003c/td\u003e\n\n\u003ctd\u003eConvert numbers stored as text to numbers\u003c/td\u003e\n\n\u003c/tr\u003e\n\n\u003c/tbody\u003e\n\n\u003c/table\u003e\n\n# Usage examples\n\n## Basic evaluator\n```cs\nusing System;\nusing org.matheval;\n\t\t\t\t\t\npublic class Program\n{\n\tpublic static void Main()\n\t{\n\t\tExpression expression = new Expression(\"(a + b) / 2 \");\n\t\texpression.Bind(\"a\", 3);\n\t\texpression.Bind(\"b\",5);\n\t\tObject value = expression.Eval();\n\t\tConsole.WriteLine(\"Result: \"+value); //Result: 4\n\t\t\n\t}\n}\n```\n\n## Conditional statements\nIF/ELSE\n```cs\nusing System;\nusing org.matheval;\n\t\t\t\t\t\npublic class Program\n{\n\tpublic static void Main()\n\t{\n\t\tExpression expression = new Expression(\"IF(time\u003e8, (HOUR_SALARY*8) + (HOUR_SALARY*1.25*(time-8)), HOUR_SALARY*time)\");\n\t\t//bind variable\n\t\texpression.Bind(\"HOUR_SALARY\", 10);\n\t\texpression.Bind(\"time\", 9);\n\t\t//eval\n\t\tDecimal salary = expression.Eval\u003cDecimal\u003e();\t\n\t\tConsole.WriteLine(salary); //return 92.5\n\t}\n}\n```\nSWITCH/CASE\n```cs\nExpression expr = new Expression(\"SWITCH(name,1,'apple',2,'mango',3,'banana','N/A')\");\n//Bind variable\nexpr.Bind(\"name\", 2);\n//eval\nString value = expr.Eval\u003cString\u003e(); //return \"mango\"\n```\n\n## Validate expression\n```cs\nExpression expression = new Expression(\"SUM(1,2,3) + true\");\nList\u003cString\u003e errors = expression.GetError(); \nif(errors.Count \u003e 0)\n{\n  foreach(String error in errors)\n  {\n  \tConsole.WriteLine(error);\n  }\n}\t\n```\n\n## Get variables that appear in the expression\n```cs\nExpression expression = new Expression(\"sin(pi/2+x)-cos(x) = a\");\n//validate expression\nList\u003cString\u003e errors = expression.GetError();\nif (errors.Count == 0)\n{\n // get variables\n List\u003cString\u003e variables = expression.getVariables();\n foreach (String variable in variables)\n {\n  Console.WriteLine(variable); // will print x, a\n }\n}\n```\n## Disable functions\n```cs\nExpression expression = new Expression();\nexpression.DisableFunction(\"SIN\");\nexpression.DisableFunction(\"COS\");\n```\n```cs\nExpression expression = new Expression();\nexpression.DisableFunction(new string[] { \"SIN\", \"COS\" });\n```\n# Work with number expression\nScale and rounding mode\n\nUse setScale() method to set number of digits to the right of the decimal point. Use setRoundingMode() method to set rounding mode. You can choose 1 of the following options:\n\n    MidpointRounding.AwayFromZero\n    MidpointRounding.ToEven\n    MidpointRounding.ToZero\n```cs\nExpression expression = new Expression(\"pi/2\");\nexpression.SetScale(3);\nexpression.SetRoundingMode(MidpointRounding.ToEven);\nDecimal value = expression.Eval\u003cDecimal\u003e();//return 1.571\n```\n    \n## Min, max, sum, avg\n\n```cs\nExpression expr = new Expression(\"MIN(a,b,c)\");\nexpr.Bind(\"a\", 2);\nexpr.Bind(\"b\", 3);\nexpr.Bind(\"c\", 16);\nint value = expr.Eval\u003cint\u003e(); // return 2\n```\n\n```cs\nExpression expr = new Expression(\"MAX(a)\");\nexpr.Bind(\"a\", new List\u003cDecimal\u003e { 10m, 9.6m, 135, 724.2m, 6m, -4m });\nDecimal value = expr.Eval\u003cDecimal\u003e(); // return 724.2\n```\n\n```cs\nExpression expr = new Expression(\"SUM(a,b,c)\");\nexpr.Bind(\"a\", 2d);\nexpr.Bind(\"b\", 3d);\nexpr.Bind(\"c\", 16d);\nDouble sum = expr.Eval\u003cDouble\u003e(); // return 21\nexpr.SetFomular(\"AVERAGE(a,b,c)\");\nDouble avg = expr.Eval\u003cDouble\u003e(); // return 7\n```\n\n```cs\nExpression expr = new Expression(\"SUM(a)\");\nexpr.Bind(\"a\", new List\u003cDecimal\u003e { 2m, 3m, 16m });\nDecimal sum = expr.Eval\u003cDecimal\u003e(); // return 21\nexpr.SetFomular(\"AVERAGE(a)\");\nDecimal avg = expr.Eval\u003cDecimal\u003e(); // return 7\n```\n\n```cs\nusing System;\nusing org.matheval;\n\t\t\t\t\t\npublic class Program\n{\n\tpublic static void Main()\n\t{\n\t\tExpression expr = new Expression(\"MIN(2,3,16)\");\n\t\tint min = expr.Eval\u003cint\u003e(); \n\t\tConsole.WriteLine(min);// return 2 (min)\n\t\t\n\t\texpr.SetFomular(\"Max(2,3,16)\");\n\t\tint max = expr.Eval\u003cint\u003e(); \n\t\tConsole.WriteLine(max);// return 16 (max)\n\t\t\n\t\texpr.SetFomular(\"Sum(2,3,16)\");\n\t\tdecimal sum = expr.Eval\u003cdecimal\u003e(); \n\t\tConsole.WriteLine(sum);// return 21\t(sum)\n\t\t\n\t\texpr.SetFomular(\"average(2,3,16)\");\n\t\tdecimal average = expr.Eval\u003cdecimal\u003e(); \n\t\tConsole.WriteLine(average);// return 7 (average)\t\n\t}\n}\n```\n## Round, floor, ceiling\n```cs\nusing System;\nusing org.matheval;\n\t\t\t\t\t\npublic class Program\n{\n\tpublic static void Main()\n\t{\n\t\tExpression expr = new Expression(\"ROUND(2.149, 1)\");\n\t\tObject value = expr.Eval\u003cDecimal\u003e(); \n\t\tConsole.WriteLine(\"ROUND(2.149, 1) = \"+value); //return 2.1\n\t\t\n\t\texpr = new Expression(\"FLOOR(2.149)\");\n\t\tvalue = expr.Eval(); \n\t\tConsole.WriteLine(\"FLOOR(2.149) = \"+value); //return 2\t\n\t\t\n\t\texpr = new Expression(\"FLOOR(3.7,2)\");\n\t\tvalue = expr.Eval(); \n\t\tConsole.WriteLine(\"FLOOR(3.7,2) = \"+value);\t//return 2\n\t\t\n\t\texpr = new Expression(\"CEILING(2.149)\");\n\t\tvalue = expr.Eval(); \n\t\tConsole.WriteLine(\"CEILING(2.149) = \"+value); //return 3\n\t\t\n\t\texpr = new Expression(\"CEILING(1.5, 0.1)\");\n\t\tvalue = expr.Eval(); \n\t\tConsole.WriteLine(\"CEILING(1.5, 0.1) = \"+value); //return 1.5\t\n\t}\n}\n```\n## Trigonometry\n```cs\nExpression expr = new Expression('SIN(PI())^2+COS(PI())^2');\nObject value = expr.Eval(); //return 1\n```\n\n```cs\nExpression expr = new Expression(\"sin(a) - cos(a) = SQRT(2) * sin(a - pi / 4)\");\nbool value = expr.Bind(\"a\", Math.PI/5).Eval\u003cbool\u003e(); //return true\n```\n\n```cs\nusing System;\nusing org.matheval;\n\t\t\t\t\t\npublic class Program\n{\n\tpublic static void Main()\n\t{\n\t\tExpression expr = new Expression(\"tan(a)^3-((3*sin(a)-sin(3*a))/(3*cos(a)+cos(3*a)))\");\n\t\tDecimal value = expr.Bind(\"a\", Math.PI/6).Eval\u003cDecimal\u003e(); \n\t\tConsole.WriteLine(value); //return 0\t\t\n\t}\n}\n```\n## Unary operator\n```cs\nExpression expr = new Expression(\"3--2+--3-(-(++2))\");\nObject value = expr.Eval(); //return 10\n```\n\n## Deal with string\n```cs\nusing System;\nusing org.matheval;\n\t\t\t\t\t\npublic class Program\n{\n\tpublic static void Main()\n\t{\n\t\tExpression taxExpr = new Expression(\"IF(LOWER(TAX_CODE)='vat',amount*10/100,IF(LOWER(TAX_CODE)='gst',amount*15/100,0))\");\n\t\ttaxExpr.Bind(\"TAX_CODE\",\"GST\");\n\t\ttaxExpr.Bind(\"amount\", 5005m);\n\t\tDecimal value = taxExpr.Eval\u003cDecimal\u003e();\n\t\tConsole.WriteLine(value);\n\t}\n}\n```\n\n## Left, right\n```cs\nExpression expr = new Expression(\"IF(VALUE(LEFT(date,4))\u003c2020,'n/a','generation of ' \u0026 LEFT(date,4))\");\nexpr.Bind(\"date\", \"2022-01-20\");\nString value = expr.Eval\u003cString\u003e();\n```\n\n## Calculate tax\n```cs\nExpression taxExpr = new Expression(\"IF(LOWER(TAX_CODE)='vat',amount*10/100,IF(LOWER(TAX_CODE)='gst',amount*15/100,0))\");\ntaxExpr.Bind(\"TAX_CODE\",\"GST\");\ntaxExpr.Bind(\"amount\", 5005m);\nDecimal value = taxExpr.Eval\u003cDecimal\u003e();\n```\n\n## Concatenate strings\n```cs\nusing System;\nusing org.matheval;\n\t\t\t\t\t\npublic class Program\n{\n\tpublic static void Main()\n\t{\n\t\tExpression expr = new Expression(\"CONCAT('The United States of ', 'America')\");\n\t\tString value = expr.Eval\u003cString\u003e();\t\n\t\tConsole.WriteLine(value);//The United States of America\t\n\t}\n}\n```\n\n## Datetime\nDecember 30, 1899 date system\n\nWe use 1899 date system, the first day that is supported is December 30, 1899. Any date you supply to this library will be converted into a serial number that represents the number of elapsed days starting from December 30, 1899. Look at the sample below:\n```cs\nExpression expr = new Expression(\"DATETIME(2025,01,02,12,11,10)\");\nDecimal serialDate = expr.Eval\u003cDecimal\u003e(); // return 45659.507755 (days elapsed from December 30, 1899)\nDateTime datetime = expr.Eval\u003cDateTime\u003e(); // return 2025/01/02 12:11:10\n```\n## Setting holidays and weekend for expression context\n```cs\nExpression expr = new Expression(\"NETWORKDAYS(B5,C5)\");\nexpr.SetHolidays(\n        new DateTime[] {\n            new DateTime(2017,11,23),\n            new DateTime(2017, 12, 25),\n            new DateTime(2018, 1, 1)\n        }\n    );\nexpr.SetWeekends(new Int32[] { 1, 2, 3 }); //Sunday = 0, ..., Saturday = 6\nexpr.Bind(\"B5\", new DateTime(2017, 1, 15));\nexpr.Bind(\"C5\", new DateTime(2018, 1, 21));\nDecimal value = expr.Eval\u003cDecimal\u003e(); //return 212\n```\n## Calculate networkday\n```cs\nExpression expr = new Expression(\"NETWORKDAYS(DATEVALUE('2021-03-30'),DATEVALUE('2022-05-16'))\");\nint value = expr.Eval\u003cint\u003e(); // return 295\n```\n```cs\nExpression expr = new Expression(\"NETWORKDAYS(startdate,enddate)\");\nexpr.Bind(\"startdate\", new DateTime(2021, 08, 11));\nexpr.Bind(\"enddate\", new DateTime(2021, 10, 4));\nObject value = expr.Eval(); // return 39\n```\n## Calculates the number of days, months, or years between two dates.\n```cs\nExpression expr = new Expression(\"DATEDIF(DATEVALUE('2021-01-31'),DATEVALUE('2029-08-29'),'Y')\");\nObject value = expr.Eval(); // return 8\n```\n```cs\nExpression expr = new Expression(\"DATEDIF(DATEVALUE('2021-01-31'),DATEVALUE('2029-08-29'),'M')\");\nObject value = expr.Eval(); // return 102\n```\n```cs\nExpression expr = new Expression(\"DATEDIF(DATEVALUE('2021-01-31'),DATEVALUE('2029-08-29'),'D')\");\nObject value = expr.Eval(); // return 3132\n```\n```cs\nExpression expr = new Expression(\"DATEDIF(DATEVALUE('2021-01-31'),DATEVALUE('2029-08-29'),'MD')\");\nObject value = expr.Eval(); // return 29\n```\n## Calculates the number of days, hours, mins between two datetime.\n```cs\nExpression expr = new Expression(\"DATETIME(2021,2,28,15,50,0)-DATETIME(2021,2,21,23,0,0)\");\nDecimal value = expr.Eval\u003cDecimal\u003e(); // return 6.70139 (days)\n```\n```cs\nExpression expr = new Expression(\"(DATETIME(2021,2,28,15,50,0)-DATETIME(2021,2,21,23,0,0))*24\");\nDecimal value = expr.Eval\u003cDecimal\u003e(); // return 160.8 (hours)\n```\n```cs\nExpression expr = new Expression(\"(DATETIME(2021,2,28,15,50,0)-DATETIME(2021,2,21,23,0,0))*24*60\");\nDecimal value = expr.Eval\u003cDecimal\u003e(); // return 9650 (mins)\n```\n## Calculates the number of days, hours, mins between two timespan.\n```cs\nExpression expr = new Expression(\"DATETIME(2021,2,28,15,50,0)-DATETIME(2021,2,21,23,0,0)\");\nObject value = expr.Eval(); // return 6.701389 (days)\n```\n## Substract, add datetime\n```cs\nExpression expr = new Expression(\"DATETIME(2021,2,28,15,50,0)-DATETIME(2021,2,21,23,0,0)\");\nObject value = expr.Eval(); // return 6.701389 (days)\n```\n```cs\nExpression expr = new Expression(\"DATE(2021,2,28)-DATE(2021,2,21)\");\nObject value = expr.Eval(); // return 7 (days)\n```\n```cs\nExpression expr = new Expression(\"DATE(2021,9,20)+3\");\nDateTime value = expr.Eval\u003cDateTime\u003e(); // return 2021-09-23\n```\n```cs\nExpression expr = new Expression(\"TIME(10,10,0)+TIME(10,10,0)\");\nTimeSpan value = expr.Eval\u003cTimeSpan\u003e(); // return 20:20:00\n```\n\n## License\nMIT license\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatheval%2Fexpression-evaluator-c-sharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatheval%2Fexpression-evaluator-c-sharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatheval%2Fexpression-evaluator-c-sharp/lists"}