Ну, хотя бы за превышение скорости - уж больно быстро шастает.
И за дискриминацию.
а дискриминация то в чём?
Российские суды разъяснят.
Оказалось есть еше более простой способ. Это целочисленное деление заменить на целочисленное умножение. А потом просто откинуть от результата лишние знаки.
Вот сам алгоритм.
Да, нам тут уже показывали статейку с примером такой замены. После неё ракеты начали на головы людям падать.
Это не страшно. Заменяют ведь одни, а на голову падает другим.
так мы дойдём до того, что математики самые неразумные и жестокие существа на планете…
Ракеты и без таких ошибок на головы падают.
С другой стороны только дурак не делает ошибок.
Даже компания интел в своем процессоре сделала ошибку при умножении, а потом всем рассказывала как она героически ее исправила.
А самые неразумные это защитники окружающей среды. Они к празднику 9 мая решили выделить деньги на помощь людям, которые создают экологичекие катастрофы.
Не будем показывать пальцем, но во всем виноват Слоненок.
Нет, ну мне нравятся такие темы - название: “Проблема с большими числами FLOAT”, а потом оказывается, что ни вообще числа с плавающей точкой, ни конкретно float вообще не нужны.
Когда мы научимся правильно называть темы?
Ну да. вместо того, чтобы сказать как решить проблему с большими числами Float мне тут начали втирать что это сделать нельзя. А еще некоторые товарищи, не будем показывать на них пальцем см. пост 9 предложили арифметические действия заменить кучей условий:
if(M==16000613) { F=10000000.9}
else if(M==16000614) { F=10000000.3}
else { F=10000000.3}
А после таких ответов оказывается я тему неправильно назвал.
Видать у автора предыдущего сообщения хорошо проходило празднование нового года.
Ну да ладно. Если на форуме так принято, то я приму данный формат общения на форуме.
Во-первых, никакой проблемы с числами float нет - Вы сами ее придумали. А та особенность числе float, которую Вы называете проблемой, действительно неустранима (почему - я объяснял). Так что Вам сказали все правильно (если считаете, что “нет” - приведите пример “решения проблемы”).
А вариант:
Я Вам подсказал, та как он полностью решает сформулированную Вами задачу. А то, что он Вам не подошел, связано с тем, что свою задачу Вы сформулировали неправильно - так кто ж Вам виноват.
Вы не только тему неправильно назвали, Вы еще и ошибки свои признавать не хотите, пытаясь перевалить их на других.
Если кому интересно: пытался решить решить предложенную задачу на своём ноуте на Питоне. Считает флоат нормально: 10000000/30000000 = 0.333333333333333
но чтобы подсчитать все 60_000_000*16_000_000 = 960_000_000_000_000 значения функции методом рекурсии у меня не хватило памяти: result.append(r) MemoryError
""" Buldakov
https://forum.arduino.ru/t/problema-s-bolshimi-chislami-float/9487/6
unsigned long N,M;
Надо посчитать переменную
F=(float)(1.0*16_000_000/M)*N;
Если N=10000384 а M=16000613 то F=10000002.0
Если N=10000384 а M=16000614 то F=10000000.0
Если N=10000384 а M=16000615 то F=10000000.0
Только N меняется в диапазоне от 1 до 60_000_000, а M меняется в диапазоне от 16_000_001 до 32_000_000.
PS C:\PycharmProjects\pythonRecursion> 60_000_000*16_000_000 = 960_000_000_000_000
PS C:\PycharmProjects\pythonRecursion> 10000000/30000000 = 0.333333333333333
"""
# This is a sample Python script.
### Pекурсия ###
def f5(m, n):
return 16_000_000 / m * n
print(f5(10_000_384, 16_000_613)) # 25_599_997.760086015
print(f5(10000384, 16000614)) # 25_599_999.360024575
print(f5(10000384, 16000615)) # 25_600_000.95996314
k = 1
k1 = 16_000_001
result = []
for k in range(1, 60_000_001): #
for k1 in range(16_000_001, 32_000_001): #
r = f5(k, k1)
result.append(r) # result.append(r) MemoryError
print(len(result)) #
unsigned long не может быть больше 4 294 967 295.
Нужно unsigned long long, тот до 18 446 744 073 709 551 615
Хотя питон я не знаю, могу и врать нещадно )))
в Питоне есть: int(), float(), str(), bool(). Фсё ооченно просто
Хоть 200 знакофф после точки. Или после запятой…
На столько ущербный язык? )
А в каком языке все задом наперёд писать нужно? Забыл название. Нельзя реализовать эту дичь?
В польском.
На 19
Чо, польский язык программирования есть?)))