Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 7

Как из float числа в цикле отнимать значения из массива

14.10.2022, 08:49. Показов 440. Ответов 2

Студворк — интернет-сервис помощи студентам
Доброго дня

Подскажите пжл., как правильно реализовать?

1. Имеется float число, к примеру 288641.0102
2. Имеется массив вида
Array (
[0] => 6094
[1] => 6095.01
[2] => 6095.0004
...
...
...
)

3. Необходимо от числа 288641.0102 отнимать значение массива по строчно до тех пор, пока не израсходуем данное число. Итогом служит число с двумя числами после запятой, типа 7.87 либо 43.22

То есть ответ включает, сколько строк входит в данное число, с точностью до 2-х знаков после запитой!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.10.2022, 08:49
Ответы с готовыми решениями:

Как отнимать на 2 в цикле for ?
Привет всем, у меня очень простой вопрос, как отнимать на 2 в цикле for ?

Можно ли значения в цикле сделать float?
В данном коде нужно умножать значения из списка на перебор значений из 1-го цикла, а потом суммировать все эти значения. Если сумма данных...

Получение значения из float* массива
Всем привет! Задание следующее: написать класс с float-массивом, к нему 2 функции на добавление и получение значений. Вроде бы значения в...

2
Невнимательный
 Аватар для ft4l
3112 / 1290 / 359
Регистрация: 08.02.2013
Сообщений: 7,566
Записей в блоге: 2
14.10.2022, 09:56
Лучший ответ Сообщение было отмечено maksimovgenya как решение

Решение

Цитата Сообщение от maksimovgenya Посмотреть сообщение
сколько строк входит в данное число, с точностью до 2-х знаков после запитой!
Сколько строк... это целое число
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$n = 288641.0102;
$A = [
  6094,
  6095.01,
  6095.0004,
  156095.0004,
  114095.01,
  54321,
];
echo "Число: ", $tmp=$n, "\n\t Process...\n";
$i=0;
while($a = pos($A)) {
  echo "\t\t $tmp - $a = ";
  if ($tmp < $a) {
    echo "out of range\n";
    break;
   }
   ++$i;
   echo $tmp -= $a, "\n";
   next($A);
}
reset($A);
echo "\t Result: $tmp left. Subtracted $i numbers \n";
Code
1
2
3
4
5
6
7
8
9
10
$ php test.php
╨з╨╕╤Б╨╗╨╛: 288641.0102
         Process...
                 288641.0102 - 6094 = 282547.0102
                 282547.0102 - 6095.01 = 276452.0002
                 276452.0002 - 6095.0004 = 270356.9998
                 270356.9998 - 156095.0004 = 114261.9994
                 114261.9994 - 114095.01 = 166.98940000001
                 166.98940000001 - 54321 = out of range
         Result: 166.98940000001 left. Subtracted 5 numbers
Например если что-то такое, то куда вставить округление ... round() / floor() / ceil() ?
1
0 / 0 / 0
Регистрация: 08.02.2018
Сообщений: 7
14.10.2022, 10:55  [ТС]
Цитата Сообщение от ft4l Посмотреть сообщение
Например если что-то такое, то куда вставить округление ... round() / floor() / ceil() ?
Все круто, благодарю, вроде работает, но сейчас смотрю, что действительно есть проблема с округлением.

Ответ данного действия получил такой:

Число: 164560 Process... 164560 - 609998000 = out of range Result: 164560 left. Subtracted 0 numbers

Получается что:

* Итоговая сумма от которой отнимаем = 164560 (она уже приведена к конечному виду, то есть деленная на 100000)
* А вот сам массив идет первородный, то есть с дополнительными 5 нулями, вида 609998000

Попытался округлять число массива перед отниманием, не понял где это делается,

Попытался умножить саму сумму на 100000 перед тем как отнимать от него массив, получил :

Число: 16456000000 Process... 16456000000 - 609998000 = 15846002000 15846002000 - 610000000 = 15236002000 15236002000 - 610000000 = 14626002000 14626002000 - 610000000 = 14016002000 14016002000 - 610000000 = 13406002000 13406002000 - 615000000 = 12791002000 12791002000 - 619790000 = 12171212000 12171212000 - 619790000 = 11551422000 11551422000 - 619790000 = 10931632000 10931632000 - 619790000 = 10311842000 10311842000 - 619799990 = 9692042010 9692042010 - 619799990 = 9072242020 9072242020 - 619799990 = 8452442030 8452442030 - 619800000 = 7832642030 7832642030 - 619800000 = 7212842030 7212842030 - 619800000 = 6593042030 6593042030 - 619800000 = 5973242030 5973242030 - 619900000 = 5353342030 5353342030 - 619900000 = 4733442030 4733442030 - 619900000 = 4113542030 4113542030 - 619900000 = 3493642030 3493642030 - 619900000 = 2873742030 2873742030 - 620000000 = 2253742030 2253742030 - 623800000 = 1629942030 1629942030 - 623999000 = 1005943030 1005943030 - 624000000 = 381943030 381943030 - 624400000 = out of range Result: 381943030 left. Subtracted 26 numbers

Итоговое число = 26 это правильно, а как получить не целое число 26, а дробное, учитывая остаток?

К примеру какой получается остаток 381943030 от числа 624000000 - ну примерно 41%

Что бы итог был равен = 26,41

Добавлено через 8 минут
Цитата Сообщение от ft4l Посмотреть сообщение
Сколько строк... это целое число
Да вы правы, но это скорее что бы был понятен принцип, так как на форумах уже начали придираться что разделитель не запятая , а точка, а в заданиях указано кол-во после запятой, что у меня написано число, а это число с плавающей запятой, и куча еще разных сообщений, который на логику понимания задания в принципе не влияют.

Поэтому уже так написал что бы попытаться объяснить с разных сторон! :-)

По факту получается, что мне нужно узнать, во сколько раз значения массива (сколько фактически сумм строк) умещается в
первоначального числа, как я написал выше к примеру "26,41"


Фуу, надеюсь понятно объяснил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.10.2022, 10:55
Помогаю со студенческими работами здесь

В цикле вставить значения массива в элементы
Привет, ребят! Не получается решить такую задачу. Есть элементы и нужно вставить в них значения из массива. Когда я пробую сделать цикл....

Написать программу, которая будет складывать нечетные числа и отнимать четные. Вывести результат для первых 15
Написать программу, которая будет складывать нечетные числа и отнимать четные. Вывести результат для первых 15 чисел.

Нужна компонента: что-то типа StringGrid, но значения ячеек должны иметь тип числа (float, double и т.д.)
Уважаемые дамы и господа! Если у кого-то есть, или кто-то знает где можно взять компоненту под билдер: что-то типа StringGrid, но...

Вывод значения суммы четверти двумерного массива в цикле
Помогите пожалуйста. Задание &quot;В квадратном массиве выделим четыре четверти, ограниченные главной и побочной диагоналями (без учета...

Как отнимать в Access (между строк)
Здравствуйте уважаемые У меня вопрос простой, я и сам понимаю что простой, дело тут в мелочи но не могу никак разобраться как это...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType и SDL3_ttf из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru