using System.Collections;
using System.Collections.Generic;
public static void Main()
var strings = new List<string> {
IEnumerable<string> results = strings.Select(s => s.RoundLongNumber());
foreach(var res in results)
public static class Extensions
public static string RoundLongNumber(this string input)
if (!ValidLongNumber(input, out bool isInteger) || isInteger) return input;
int index = input.IndexOf('.');
string part1 = input.Remove(index);
string part2 = input.Substring(index + 1);
StringBuilder sb = new StringBuilder(part2);
sb.Length = sb.Length - 1;
int lastInt = LastInt() + 1;
sb.Length = sb.Length - 1;
int num = int.Parse(part1);
return (++num).ToString();
sb[sb.Length - 1] = (char)(lastInt + '0');
if (lastInt != 9) return BuildNumber();
int LastInt() => sb[sb.Length - 1] - '0';
string BuildNumber() => part1 + "." + sb.ToString();
private static bool ValidLongNumber(string number, out bool isInteger)
if (string.IsNullOrWhiteSpace(number)) return false;
foreach(char c in number)
bool isDigit = char.IsDigit(c);
if (!isDigit) isInteger = false;
if (isPoint) pointCount++;
if(pointCount > 1 || (!isPoint && !isDigit)) return false;