Ваш недостающий 1 уровень во вторых декодированных данных JSON ...
{"DadosBasicos":{"NomeCompl...
Таким образом, ваш адрес электронной почты на самом деле в
$email = $json_002->DadosBasicos->Login;
Можно упростить части путем деления числителя и знаменателя их GCD:
var gcd = GCD(A, B);
return string.Format("{0}:{1}", A / gcd, B / gcd)
И очень простая функция для вычисления GCD, с помощью Алгоритм Евклида :
static int GCD(int a, int b) {
return b == 0 ? Math.Abs(a) : GCD(b, a % b);
}
Играя с такими вещами в прошлом, я просто добавлю, что контакт со значениями со знаком может стать ужасным. Позвольте мне предложить, чтобы самый простой способ обработать подписанные значения состоял в том, чтобы применить подход Konrad к эти абсолютные значения из Ваших исходных чисел, затем предварительно ожидать '-' к получившей строке, если исходные значения имеют различные знаки.
Используя этот подход, Наибольший общий делитель-100 и-35 равняется 5 для отношения 20:7. Если исходные исходные данные имели любой пар (-100 и 35) или (100 и-35), Вы все еще получите GCD 5 и начальный результат 20:7, но окончательный ответ был бы-20:7 (т.е. стандартизированная форма, независимо от которой вход был отрицателен, и так же, как-6/2 и так же, как 6/-2 =-3).
Вы в основном пытаетесь получить самый большой общий знаменатель - GCD для этих двух чисел и затем делите их на это и таким образом получаете свою строку?
Т.е.: 800: 600; самый большой общий знаменатель = 200 таким образом 4:3.
Это смогло бы иметь дело со всеми целыми числами. Извините за не отправку кода, но я думаю, что от этого на нем должно быть достаточно простым.
public int GCD(int a, int b)
{
while (a != 0 && b != 0)
{
if (a > b)
a %= b;
else
b %= a;
}
if (a == 0)
return b;
else
return a;
}
// Using Konrad's code:
var gcd = GCD(A, B);
return string.Format("{0}:{1}", A / gcd, B / gcd)
Другие комментаторы дали хорошие решения для целых чисел; если действительно необходимо иметь дело со значениями с плавающей точкой, тем не менее, Вам будет нужно что-то еще. В целом два вещественных числа не будут иметь чистого отношения, которое может быть красиво распечатано; то, что Вы хотите, является самым близким рациональным приближением. Вероятно, лучший способ пойти о нахождении , что должен только вычислить расширение непрерывной дроби частного; Mark Dominus дает хорошее введение в те на его блоге .