Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проблемы с функцией math.Log() / 6 сообщений из 6, страница 1 из 1
01.04.2015, 06:30
    #38923275
adimmat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с функцией math.Log()
Привет, Друзья!
Наткнулся сегодня на такую проблему!

У меня есть 2 параметра "a", "b". Тип которых decimal! Хочу провести вот такую операцию (в коде написано), но из за того, что функция Math.Log() работает только с переменными типа double, я не могу видеть результат работы этой функции в нужном мне виде (мне нужно, чтоб количество элементов после запятой было максимальным)!
Вопрос следующий, как сделать так, чтобы math.Log() нормально работал с переменными типа decimal и я не терял точность и количество элементов после запятой было бы максимальным, насколько позволяет тип decimal!

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Console.WriteLine("I'm the first decimal number");
            decimal a = 102.12345678901234567777777889M;
            Console.WriteLine(a.ToString());

            Console.WriteLine("I'm the second decimal number");
            decimal b = 112.1234784960123456777777889M;
            Console.WriteLine(b.ToString());

            Console.WriteLine("I'm the Log result after Convert");
            double lenth_1 = (Math.Floor(2 - Math.Log((double)(a - b)) / Math.Log(10, Math.E))); (здесь нужно не конвертируя, работать с decimal)
            Console.WriteLine(lenth_1.ToString());
            Console.Read();
...
Рейтинг: 0 / 0
01.04.2015, 09:14
    #38923332
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с функцией math.Log()
Либо ищите аналог функции (ну или библиотеку, в которой есть такой аналог), работающий с нужным типом данных, либо пишите свою функцию.
...
Рейтинг: 0 / 0
01.04.2015, 13:15
    #38923758
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с функцией math.Log()
Akina,

Так может ему просто при печати не хватает знаков.

Есть функция printf или format , и есть форматы %g
...
Рейтинг: 0 / 0
01.04.2015, 13:18
    #38923762
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с функцией math.Log()
adimmatВопрос следующий, как сделать так, чтобы math.Log() нормально работал с переменными типа decimal и я не терял точность и количество элементов после запятой было бы максимальным, насколько позволяет тип decimal!


Тебе целочисленный логарифм нужен, или тебе нужен именно логарифм над числами с фиксированной точкой (decimal)?
Просто последнее имеет мало смысла, поскольку логирифм -- не дискретная функция.
...
Рейтинг: 0 / 0
01.04.2015, 14:36
    #38923871
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с функцией math.Log()
adimmat, decimal это финансовый тип данных.

https://msdn.microsoft.com/en-us/library/364x0z75.aspx The decimal keyword indicates a 128-bit data type. Compared to floating-point types, the decimal type has more precision and a smaller range, which makes it appropriate for financial and monetary calculations. The approximate range and precision for the decimal type are shown in the following table.

И он (скорее всего) оптимизирован для 4х базовых арифм. операций.

Если ты пытаешься в нём ( decimal ) делать логарифмирование то ты скорее всего чего-то не понял или в чём-то не разобрался.

В науке и технике точность double в расчётах логарифма покрывают все мыслимые практические случаи. И все мат.
библиотеки используют форматы подобные double в качестве основного транспорта чисел.

Но если тебе хочется посчитать логарифм до тысячного десятичного знака после запятой то
поищи библиотеки "символьных вычислений". Возможно они тебе помогут. Или не помогут.
Или скорее всего не окажут никакого влияния на ответ твоей задачи.
...
Рейтинг: 0 / 0
02.04.2015, 06:06
    #38924391
adimmat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблемы с функцией math.Log()
Огромное спасибо Вам Ребята, я решил воспользоваться, все таки, типом double!
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проблемы с функцией math.Log() / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]