看代码吧,主要是利用正则处理,这里是保留一位小数,从“16666666.6666”转换为“1666.7万”
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string str1 = "1677732424.48";//一般长的
string str2 = "1677211251251616735554.48";//二般长的
string str3 = "1677732251251516624.4825125125125";//很长的
//更长的
Console.WriteLine(Test(str1));
Console.WriteLine(Test(str2));
Console.WriteLine(Test(str3));
Console.Read();
}
static string Test(string input)
{
Regex regex = new Regex(@"^(?<wy>\d+)(?<qy>\d{4})+(|(.\d+))$", RegexOptions.IgnoreCase);
Match m = regex.Match(input);
if (m.Success)
{
int qy = (int.Parse(m.Groups["qy"].Value) + 500) / 1000;
return string.Format("{0}.{1}", m.Groups["wy"].Value, qy);
}
else
throw new Exception("不是有效的字符串");
}
}
}