倍数为10,100,1000,...... C#

ssa*_*sal 8 c# integer

我想要一个整数是10,100,1000的倍数等等......

例如,双val = 35然后我想int 40
val = 357然后我想int val = 400
val = 245,567然后我想int val = 300,000
val = 245,567.986然后我也想int = 300,000

C#中有什么可以帮助生成这些整数

我能想到的基本逻辑是:提取第一个整数,向其中加1.计算总位数并添加零(totalno -1).

有没有更好的方法?

我想将这些值分配给图表轴.我试图根据图表的数据点动态创建轴标签值.

JDu*_*ley 28

这应该做你想要的x输入:

        double scale = Math.Pow(10, (int)Math.Log10(x));
        int val = (int)(Math.Ceiling(x / scale) * scale);
Run Code Online (Sandbox Code Playgroud)

输出:

 35          40
 357         400
 245567      300000
 245567.986  300000
Run Code Online (Sandbox Code Playgroud)

如果你想要它来处理负数(假设你想要从0舍入):

        double scale = (x == 0 ? 1.0 : Math.Pow(10, (int)Math.Log10(Math.Abs(x))));
        int val = (int)(Math.Ceiling(Math.Abs(x) / scale) * scale)*  Math.Sign(x);
Run Code Online (Sandbox Code Playgroud)

这使:

-35         -40
 0           0
 35          40
 357         400
 245567      300000
 245567.986  300000
Run Code Online (Sandbox Code Playgroud)