在小数点之前计算零

时间:2015-06-30 22:29:02

标签: c# visual-studio-2012

我试图计算在小数点前有多少个零。

 private void textBox1_TextChanged(object sender, EventArgs e)
        {
            decimal x = 0;

            if (Decimal.TryParse(textBox1.Text, out x))
            {
                var y = 1000000;
                var answer = x * y;

                displayLabel2.Text = (x.ToString().Replace(".", "").TrimStart(new Char[] { '0' }) + "00").Substring(0, 2);



            }
            else
            {
                displayLabel2.Text = "error";
            }
        }

当我插入(假设)7.2时,我得到一个显示72的输出,这就是我想要的。现在我需要另一个显示器。最初的7.2乘以1000000.因此引用的是7,200,000.00。现在我需要一些如何计算小数点前的5个零并为此显示5。如果我要做的话.72。我的报价是720,000.00。我需要显示4,为4个零。等等。然后我需要将该数字输出到displayLabel5.Text

3 个答案:

答案 0 :(得分:0)

快速而脏的代码所以要小心,但AFAIK这是最快的方式。

UsersController

现在数量为4。

保证你这比正则表达更快; - )

修改:对于多次修改,很抱歉,这是漫长的一天。需要咖啡。

答案 1 :(得分:0)

使用正则表达式查找句点之前的所有零,然后获取该匹配的字符串长度。

Regex regex = new Regex(@"(0+)\.?");
string value1 = "7,200,000.00";
value1 = value1.Replace(",",""); //get rid of the commas
Match match = regex.Match(value1);
if (match.Success)
{
    Console.WriteLine(match.Value.Length);
}

一如既往地测试代码,因为我刚才在这个小文本框中写了它,而不是在我自己编译和测试的实际视觉工作室中。但这至少应该说明方法论。

修改 稍微调整一下正则表达式,以说明该数字根本不会显示小数点的可能性。

答案 2 :(得分:0)

这里有一行<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.bluckapps.appinfomanager.ui.MainActivity"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/colorPrimary" android:elevation="6dp" android:minHeight="?attr/actionBarSize" tools:ignore="UnusedAttribute" /> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> 您可以尝试在小数点前计算零。你可以先用小数Linq然后执行Split()来得到零的数量。

Where().Count()

结果:

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {
        string myString = (720000.00).ToString();
        Console.WriteLine(myString.Split('.')[0].Where(d => d == '0').Count());
    }
}

Demo