From ba988f0d0f83d1a59430ad13f014069dc223c59f Mon Sep 17 00:00:00 2001 From: David Hernando Date: Fri, 23 Aug 2024 13:27:40 +0200 Subject: [PATCH] parse float adjustments Signed-off-by: David Hernando --- .../Pages/TransferCspr.razor.cs | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/Docs/Demos/NCTLWebExplorer/Pages/TransferCspr.razor.cs b/Docs/Demos/NCTLWebExplorer/Pages/TransferCspr.razor.cs index 73eb8bc..da3709b 100644 --- a/Docs/Demos/NCTLWebExplorer/Pages/TransferCspr.razor.cs +++ b/Docs/Demos/NCTLWebExplorer/Pages/TransferCspr.razor.cs @@ -1,3 +1,4 @@ +using System.Globalization; using System.Numerics; using Casper.Network.SDK; using Casper.Network.SDK.JsonRpc; @@ -80,7 +81,7 @@ async Task SendTransferBtnClicked() if (string.IsNullOrWhiteSpace(_transferAmount)) throw new Exception(); - var cspr = float.Parse(_transferAmount); + var cspr = ParseFloat(_transferAmount); if (cspr < 2.5) throw new Exception(); var motes = (ulong)(cspr * 1_000_000_000); @@ -138,4 +139,27 @@ async Task SendTransferBtnClicked() _targetPublicKey = null; _transferAmount = null; } + + public static float ParseFloat(string input) + { + // Create a NumberFormatInfo object to allow both comma and dot as decimal separators + NumberFormatInfo format = new NumberFormatInfo(); + format.NumberDecimalSeparator = ","; + + // Try to parse with comma as decimal separator + if (float.TryParse(input, NumberStyles.Float, format, out float result)) + { + return result; + } + + // If that fails, try parsing with dot as decimal separator + format.NumberDecimalSeparator = "."; + if (float.TryParse(input, NumberStyles.Float, format, out result)) + { + return result; + } + + // Handle the case where parsing fails (optional) + throw new FormatException($"Unable to parse '{input}' as a float."); + } } \ No newline at end of file