English 中文(简体)
两条 in,一条在切除点前,一条在后
原标题:Split double into two int, one int before decimal point and one after

我需要把双面价值分成两面价值,一个在小点之前,另一个在后。 ci点之后,应有两个数字。

例:

    10.50 = 10 and 50
    10.45 = 10 and 45
    10.5  = 10 and 50
最佳回答

这是你可以做的:

string s = inputValue.ToString("0.00", CultureInfo.InvariantCulture);
string[] parts = s.Split( . ); 
int i1 = int.Parse(parts[0]);
int i2 = int.Parse(parts[1]);
问题回答

脑.可能很缓慢。 采用以下方法:

double number;

long intPart = (long) number;
double fractionalPart = number - intPart;

What programming language you want to use to do this? Most of the language should have a Modulo operator. C++ example:

double num = 10.5;
int remainder = num % 1
"10.50".Split( . ).Select(int.Parse);
/// <summary>
/// Get the integral and floating point portions of a Double
/// as separate integer values, where the floating point value is 
/// raised to the specified power of ten, given by  places .
/// </summary>
public static void Split(Double value, Int32 places, out Int32 left, out Int32 right)
{
    left = (Int32)Math.Truncate(value);
    right = (Int32)((value - left) * Math.Pow(10, places));
}

public static void Split(Double value, out Int32 left, out Int32 right)
{
    Split(value, 1, out left, out right);
}

使用:

Int32 left, right;

Split(10.50, out left, out right);
// left == 10
// right == 5

Split(10.50, 2, out left, out right);
// left == 10
// right == 50

Split(10.50, 5, out left, out right);
// left == 10
// right == 50000

如何?

var n = 1004.522
var a = Math.Floor(n);
var b = n - a;

另一变体涉及操纵:

static void Main(string[] args)
{
    decimal number = 10123.51m;
    int whole = (int)number;
    decimal precision = (number - whole) * 100;

    Console.WriteLine(number);
    Console.WriteLine(whole);
    Console.WriteLine("{0} and {1}",whole,(int) precision);
    Console.Read();
}

• 确保他们厌恶,或得到通常的轮./双重行为。

你们可以与扼杀分开,然后变成暗中......

string s = input.ToString(); 
string[] parts = s.Split( . );

这一职能需要时间,然后转化为60基点。

    public string Time_In_Absolute(double time)
    {
        time = Math.Round(time, 2);
        string[] timeparts = time.ToString().Split( . );                        
        timeparts[1] = "." + timeparts[1];
        double Minutes = double.Parse(timeparts[1]);            
        Minutes = Math.Round(Minutes, 2);
        Minutes = Minutes * (double)60;
        return string.Format("{0:00}:{1:00}",timeparts[0],Minutes);
        //return Hours.ToString() + ":" + Math.Round(Minutes,0).ToString(); 
    }

使用Linq。 仅澄清@Denis的答复。

var parts = "10.50".Split( . ).Select(int.Parse);
int i1 = parts.ElementAt(0);
int i2 = parts.ElementAt(1);

Try:

string s = "10.5";
string[] s1 = s.Split(new char[] { "." });
string first = s1[0];
string second = s1[1];

你们可以在不通过扼杀的情况下这样做。 例:

foreach (double x in new double[]{10.45, 10.50, 10.999, -10.323, -10.326, 10}){
    int i = (int)Math.Truncate(x);
    int f = (int)Math.Round(100*Math.Abs(x-i));
    if (f==100){ f=0; i+=(x<0)?-1:1; }
    Console.WriteLine("("+i+", "+f+")");
}

产出:

(10, 45)
(10, 50)
(11, 0)
(-10, 32)
(-10, 33)
(10, 0)

Won t work for a number such as -0.123. 然后,我又不肯定这如何适合你的代表性。

I actually just had to answer this in the real world and while @David Samuel s answer did part of it here is the resulting code I used. As said before Strings are way too much overhead. I had to do this calculation across pixel values in a video and was still able to maintain 30fps on a moderate computer.

double number = 4140 / 640; //result is 6.46875 for example

int intPart = (int)number; //just convert to int, loose the dec.
int fractionalPart = (int)((position - intPart) * 1000); //rounding was not needed.
//this procedure will create two variables used to extract [iii*].[iii]* from iii*.iii*

用于在640X 480个视频材料中从六氯计中解答X。

Console.Write("Enter the amount of money: ");
double value = double.Parse(Console.ReadLine());

int wholeDigits = (int) value;
double fractionalDigits = (value - wholeDigits) * 100;
fractionalDigits = (int) fractionalDigits;

Console.WriteLine(
    "The number of the shekels is {0}, and the number of the agurot is {1}",
    wholeDigits, fractionalDigits);




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签