laatzen/Common/CordonelAssemblyLine/Converter/MathConverter.cs
2021-10-01 11:09:20 +02:00

59 lines
2.0 KiB
C#

using System;
using System.Globalization;
using System.Linq;
using System.Windows.Data;
namespace CordonelAssemblyLine.Converter
{
public class MathConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return double.Parse((string)value, CultureInfo.CurrentUICulture);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string format = "";
string strValue = (string)value;
strValue = strValue.Replace("x", "*").Replace("X", "*");
if (strValue.ToUpper().Contains("E"))
{
return double.Parse(strValue, CultureInfo.InvariantCulture).ToString(format);
//2E-07
}
else if (strValue.Contains("^-") && strValue.Contains("*"))
{
var split = strValue.Split('*');
var mulit = double.Parse(split.First());
var powNumber = double.Parse(split.Last().Split('^').First());
var powBy = double.Parse(split.Last().Split('^').Last());
return (mulit * Math.Pow(powNumber, powBy)).ToString(format);
//2*10^-3
}
else if (strValue.Contains("-") && strValue.Contains("*"))
{
var split = strValue.Split('*');
var mulit = double.Parse(split.First());
var powNumber = double.Parse(split.Last().Split('-').First());
var powBy = double.Parse(split.Last().Split('-').Last());
powBy = powBy * -1;
return (mulit * Math.Pow(powNumber, powBy)).ToString(format);
}
else if (strValue.Contains("0,0"))
{
return double.Parse(strValue, CultureInfo.CurrentUICulture).ToString(format);
}
return value;
}
}
}