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

У меня есть 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
Проблемы с функцией math.Log()
    #38923332
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Либо ищите аналог функции (ну или библиотеку, в которой есть такой аналог), работающий с нужным типом данных, либо пишите свою функцию.
...
Рейтинг: 0 / 0
Проблемы с функцией math.Log()
    #38923758
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

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

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


Тебе целочисленный логарифм нужен, или тебе нужен именно логарифм над числами с фиксированной точкой (decimal)?
Просто последнее имеет мало смысла, поскольку логирифм -- не дискретная функция.
...
Рейтинг: 0 / 0
Проблемы с функцией math.Log()
    #38923871
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Проблемы с функцией math.Log()
    #38924391
adimmat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо Вам Ребята, я решил воспользоваться, все таки, типом double!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проблемы с функцией math.Log()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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