Разделите двойное на два типа int, один int перед десятичной точкой и один после - PullRequest
16 голосов
/ 06 ноября 2011

Мне нужно разделить двойное значение на два целых числа, одно до десятичной точки и одно после.Int после десятичной точки должен иметь две цифры.

Пример:

    10.50 = 10 and 50
    10.45 = 10 and 45
    10.5  = 10 and 50

Ответы [ 13 ]

0 голосов
/ 09 июля 2012

На самом деле мне просто нужно было ответить на этот вопрос в реальном мире, и хотя ответ @David Samuel сделал часть этого здесь, это полученный код, который я использовал.Как уже говорилось, строки слишком много накладных расходов.Я должен был сделать этот расчет по значениям пикселей в видео и все еще был способен поддерживать 30 кадров в секунду на умеренном компьютере.

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*

Используется для определения x, y по числу пикселей в видеопотоке 640 X 480.

0 голосов
/ 06 ноября 2011

Вы можете сделать это, не проходя строки.Пример:

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)

Однако не работает для числа, подобного -0.123Опять же, я не уверен, как это будет соответствовать вашему представлению.

0 голосов
/ 06 ноября 2011

Попробуйте:

string s = "10.5";
string[] s1 = s.Split(new char[] { "." });
string first = s1[0];
string second = s1[1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...