Недопустимая операция с плавающей запятой как исправить

Если вы видите сообщение об ошибке «Недопустимое состояние с плавающей запятой“, Это означает, что что-то не так с настройками региона в Windows. Это небольшой сбой, который вызывает эту ошибку и мешает вам работать в вашей системе.

Однако это можно легко исправить, внеся небольшое изменение в настройки региона. Итак, давайте посмотрим, как исправить ошибку недопустимого состояния с плавающей запятой в Windows 10.

Решение: через часы и регион на панели управления

Шаг 1: Перейти к Начинать кнопку на рабочем столе и введите Панель управления в поле поиска. Теперь щелкните левой кнопкой мыши результат, чтобы открыть Панель управления окно.

Начать поиск Результат панели управления

Шаг 2: в Панель управления окно, измените Просмотр по к Категория. Теперь нажмите на Часы и регион.

Вид панели управления по категории Часы и регион

Шаг 3: В следующем окне нажмите на Регион.

Часы и регион

Шаг 4: в Область, край диалоговое окно под Форматы вкладку, нажмите на Дополнительные настройки кнопка.

Вкладка "Форматы регионов" Дополнительные настройки

Шаг 5: В следующем диалоговом окне Настроить формат, под Числа вкладку, перейдите на вкладку Десятичный символ поле и установите для него запятая (,).

Нажмите Применять а потом ОК чтобы сохранить изменения.

Вкладка Настроить Формат Чисел Десятичный Символ Запятая

Вы вернетесь в Область, край диалоговое окно. Нажмите Применять а также ОК еще раз, чтобы сохранить изменения и выйти.

Вы больше не должны видеть ошибку, и вы сможете легко получить доступ к своим приложениям и браузерам на ПК с Windows 10.

by Milan Stanojevic

Milan has been enthusiastic about technology ever since his childhood days, and this led him to take interest in all PC-related technologies. He’s a PC enthusiast and he… read more


Updated on December 17, 2021

  • Many PC users have encountered the error invalid floating point operation in Windows 10.
  • This error can be easily solved by checking first if your operating system is updated.
  • The invalid floating point operation meaning is that you may have outdated drivers. 
  • Using a troubleshooter for your computer hardware should help you get rid of this error.

INVALID FLOATING POINT STATE error

XINSTALL BY CLICKING THE DOWNLOAD FILE

To fix various PC problems, we recommend DriverFix:
This software will keep your drivers up and running, thus keeping you safe from common computer errors and hardware failure. Check all your drivers now in 3 easy steps:

  1. Download DriverFix (verified download file).
  2. Click Start Scan to find all problematic drivers.
  3. Click Update Drivers to get new versions and avoid system malfunctionings.
  • DriverFix has been downloaded by 0 readers this month.

Blue Screen of Death errors are one of the most serious errors that you can encounter on Windows 10. These errors cause many problems.

Therefore, today we’re going to show you how to fix INVALID FLOATING POINT STATE errors.

Steps to fix INVALID FLOATING POINT STATE BSoD error

  1. Update Windows 10
  2. Download the latest drivers
  3. Run the Hardware Troubleshooter
  4. Run the SFC scan
  5. Run DISM
  6. Reinstall your audio drivers
  7. Remove problematic applications
  8. Reset Windows 10
  9. Check your hardware

How can I fix the INVALID FLOATING POINT STATE error?

1. Update Windows 10

Windows updates are important for your system stability and safety. Therefore, we strongly advise you to download the latest patches by using Windows Update.

New patches are released frequently. Many of them offer security improvements, new features, and various bug fixes related to both hardware and software. Therefore, be sure that you download them.

2. Download the latest drivers

  1. Press Windows Key + X to open Power User Menu, and Select Device Manager from the list.
    invalid-floating-point-state-manager
  2. When Device Manager opens, locate the driver that you wish to update, right-click it and select Update Driver Software.
    invalid-floating-point-state-update-driver-software
  3. Select Search automatically for updated driver software and let Windows 10 download and install the new driver.
    invalid-floating-point-state-driver-software
  4. Repeat these steps for all drivers that you want to update.

Windows 10 requires drivers in order to work with your hardware. If your drivers are outdated or not compatible with Windows 10, you’ll encounter a Blue Screen of Death error such as INVALID FLOATING POINT STATE.

To fix this any many other BSoD errors, it’s important that you update your drivers.

You can do that simply by visiting your hardware manufacturer’s website and downloading the latest drivers for your device. Bear in mind that you might have to update all drivers on your PC to fix this problem.

You can also use Device Manager to update your drivers, but we have to mention that Device Manager doesn’t always download the latest drivers.

So, it’s usually better to search and download the necessary drivers manually. This solution shows you how to download drivers by using Device Manager.

2.1 Update drivers automatically

Searching for drivers on your own can be time-consuming. So, we advise you to use a tool that will do this for you automatically.

Choose a professional driver solution so you won’t have to manually search for your drivers. This software will always keep your operating system updated with the newest drivers available. It does an excellent job when it comes to missing, outdated, and corrupted drivers.

It uses a large driver database and is able to find the exact driver version you need. This will remove the risk of major issues that may occur when you install faulty drivers.

DriverFix is easy to use. Just let it scan your drivers and repair/update them as you take care of other tasks. You can leave it running in the background as it has a very small footprint.

Get DriverFix

3. Run the Hardware Troubleshooter 

  1. Open the Settings app and go to the Update & Security section.
  2. Select Troubleshoot from the menu on the left.
  3. Select BSOD from the right pane and click Run the troubleshooter.error invalid floating point operation in Windows 10
  4. Follow the instructions on the screen to complete the troubleshooter.

Another thing we can try is running Windows 10’s built-in troubleshooting tool. This is designed to deal with various system issues, including BSODs.

So, it might be helpful in this case, as well.

4. Run the SFC scan

  1. Right-click on the Start Menu button, and open Command Prompt (Admin).
  2. Enter the following line and press Enter: sfc/scannow
  3. Wait until the process is done (it may take a while).
  4. If the solution is found, it will automatically be applied.
  5. Now, close the Command Prompt and restart your computer.

Outdated drivers are the main reason for errors & system issues. If some of your files are missing or crashing, an automated solution like DriverFix can solve these problems in just a couple of clicks. And it’s also lightweight on your system!

The next troubleshooter we’re going to try is the SFC scan. This is a command-line tool that goes through your system searching for potential issues.

Of course, if resolving these issues is possible, the SFC scan will do it automatically.

5. Run DISM

  1. Right-click Start and open Command Prompt (Admin).
  2. Paste the following command and press Enter:
    • DISM /Online /Cleanup-Image /RestoreHealth
  3. Wait until the scan is finished.
  4. Restart your computer and try updating again.

And the third troubleshooter we’re going to try is DISM. DISM stands for Deployment Image Servicing and Management.

As its name says, it reloads the system image, which can lead to solving potential BSOD issues.  The first part was the standard procedure.

As an alternative, we will also show you the procedure that utilizes the installation media below.

  1. Insert your Windows installation media.
  2. Right-click the Start menu and, from the menu, choose the Command Prompt (Admin).
  3. In the command line, type the following commands and press Enter after each:
    • dism /online /cleanup-image /scanhealth
    • dism /online /cleanup-image /restorehealth
  4. Now, type the following command and press Enter:
    • DISM /Online /Cleanup-Image /RestoreHealth /source:WIM:X:SourcesInstall.wim:1 /LimitAccess
  5. Make sure to change an X value with the letter of the mounted drive with Windows 10 installation.
  6. After the procedure is finished, restart your computer.

6. Reinstall your audio drivers

  1. Open Device Manager.
  2. Locate the driver that you want to remove, right-click it, and choose Uninstall from the menu.
    invalid-floating-point-state-uninstall-driver
  3. If available, check Remove driver software for this device and click OK.

After uninstalling the driver, Windows 10 will install the default driver instead. If the default driver works well and your PC is stable, you can continue using it, or you can update the driver with the newer version.

Drivers can often cause these types of errors, and sometimes updating the drivers doesn’t help, so you’ll have to find and reinstall the problematic driver.

Few users reported that their audio drivers were causing the INVALID FLOATING POINT STATE error, but the problem was fixed after reinstalling those drivers.

7. Remove problematic applications

Third-party applications can often cause this error to appear, and in order to fix this problem, you need to find and remove the problematic applications.

Your antivirus or firewall can cause this problem, therefore we recommend that you temporarily remove your antivirus program. Uninstalling the antivirus might not fix the problem.

So, it’s recommended you download and use a dedicated removal tool to remove all files associated with your antivirus. Many antivirus companies offer these tools for download, so be sure to use them.

8. Reset Windows 10

  1. Restart your PC few times during the boot sequence to start Automatic Repair.
  2. Select Troubleshoot > Reset this PC > Remove everything. Be sure to have Windows 10 installation media ready, because you might need it for this step.
  3. Select Only the drive where Windows is installed > Just remove my files and click the Reset button.
  4. Follow the instructions to complete the reset.

After Windows 10 reset is completed, you’ll have a fresh installation of Windows 10 without any third-party applications.

If the INVALID_FLOATING_POINT_STATE error is caused by software, you can fix it easily by performing a Windows 10 reset.

Resetting Windows 10 is fairly simple, and in order to complete it you might need a bootable USB flash drive.

We also have to mention that Windows 10 reset will remove all files from your C partition, so be sure to back up your important files.

If the error appears again, it means that it is caused by your hardware.

9. Check your hardware

Blue Screen of Death errors are often caused by hardware, and if you installed any new hardware recently we suggest that you remove it or replace it.

If new hardware is not the problem, we advise you to check your RAM and all other major hardware components.

INVALID FLOATING POINT STATE BSoD error can be a big problem, but we hope that you managed to fix this error by using our solutions.

newsletter icon

Newsletter

7 / 7 / 6

Регистрация: 17.01.2013

Сообщений: 190

1

10.08.2013, 13:21. Показов 3831. Ответов 11


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

есть StringGrid1 и 2 Edit’a
из них берутся значения для дальнейшего расчета (использую StrToFloat)
при нажатии на кнопку расчет выдает ошибку “Invalid floating point operation”
в чем может быть проблема?
P.S.
пробовал оставлять все строки пустыми, нажимал на кнопку и все равно выдает эту ошибку



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

10.08.2013, 13:21

11

Почетный модератор

64285 / 47584 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

10.08.2013, 15:55

2

Нужно смотреть расчеты, или корень из отрицательного или логарифм не положительного либо еще что-то.



0



Riozaki

7 / 7 / 6

Регистрация: 17.01.2013

Сообщений: 190

10.08.2013, 15:59

 [ТС]

3

Puporev, вот процедура расчета

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm9.Button1Click(Sender: TObject);
begin
  {--- формирование массива напряжений в контрольных точках }
  for i:=0 To KKT Do
    begin
      Gk[i]:=(Nk[i]/Ak[i])*10;
    end;
 
  {Расчет по первому предельному состоянию}
 
  {Расчет по второму предельному состоянию}
  {определяем изменение длины на каждом участке}
  dLit:=0;
  For i:=1 To KKT Do
    begin
      dL[i]:=((Nk[i-1]*(Lk[i]-Lk[i-1]))/(Est*Ak[i-1]))*100; {сжатие/растяжение одного участка между контрольными точками}
      dLit:=dLit+dL[i];  {сжатие/растяжение итоговое - всей балки}
    end;
end;



0



Почетный модератор

64285 / 47584 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

10.08.2013, 16:05

4

Здесь ошибки не видно, нужно весь код смотреть.
Если проект не секретный, то выложи архив



0



Пишу на Delphi…иногда

1423 / 1278 / 286

Регистрация: 03.12.2012

Сообщений: 3,914

Записей в блоге: 5

10.08.2013, 16:06

5

размерность массивов Gk и dL KKT+1 элементов?
точку останова на строку 5 и пошагово смотреть при каких значениях Nk[i], Ak[i], Lk[i] и Nk[i-1] происходит ошибка, также стоит проверить на предмет использования малых или больших значений (которые в результате арифм. операций могу вызвать ошибку)



0



7 / 7 / 6

Регистрация: 17.01.2013

Сообщений: 190

10.08.2013, 16:11

 [ТС]

6

эта ошибка возникает в пункте “растяжение и сжатие”
нужно сделать на подобие как в изгибе (изгиб – код не мой, в инете исходник нашел);



0



Riozaki

7 / 7 / 6

Регистрация: 17.01.2013

Сообщений: 190

10.08.2013, 20:21

 [ТС]

7

программа еще в стадии разработки, поэтому там еще многого нет)

Добавлено через 2 часа 42 минуты
Puporev, сделал пошаговую отладку, ошибка в этой строчке…

Delphi
1
Gk[i]:=(Nk[i]/Ak[i])*10;



0



Почетный модератор

64285 / 47584 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

10.08.2013, 20:27

8

Значит результат деления Nk[i]/Ak[i] или очень большое или очень маленькое число, выходящее за пределы типа, принятого для значений массивов Gk,Nk,Ak



0



Riozaki

7 / 7 / 6

Регистрация: 17.01.2013

Сообщений: 190

10.08.2013, 20:35

 [ТС]

9

Puporev, … так подумал… я ведь написал сам некоторые процедуры, а они ведь нигде не объявлены…
в общем я вызвал нужные процедуры, стало выдавать другую ошибку

Access violation at address 005FAEEB in module “PIzgib_b.exe”. Read of address 00000398.

Нарушение прав доступа по адресу 005FAEEB в модуле “PIzgib_b.exe”. Чтение адреса 00000398.

теперь вот так

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm9.Button1Click(Sender: TObject);
begin
  sozdanie_massivov_dannih;
  form_md;
  {--- формирование массива напряжений в контрольных точках }
  for i:=0 To KKT Do
    begin
      Gk[i]:=(Nk[i]/Ak[i])*10;
    end;
 
  {Расчет по первому предельному состоянию}
 
  {Расчет по второму предельному состоянию}
  {определяем изменение длины на каждом участке}
  dLit:=0;
  For i:=1 To KKT Do
    begin
      dL[i]:=((Nk[i-1]*(Lk[i]-Lk[i-1]))/(Est*Ak[i-1]))*100; {сжатие/растяжение одного участка между контрольными точками}
      dLit:=dLit+dL[i];  {сжатие/растяжение итоговое - всей балки}
   end;
  Formuls_RS.Show;
end;

вот собственно эти процедуры

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure sozdanie_massivov_dannih;
begin
  KolA:=0;
  for i:=1 to 10 do
    if StringGrid1.Cells[i,0]<>'' then
    KolA:=KolA+1;
  for i:=1 to KolA do
    A[i]:=StrToFloat(StringGrid1.Cells[i,0]);
  for i:=1 to KolA do
    La[i]:=StrToFloat(StringGrid1.Cells[i,1]);
 
  KolF:=0;
  for i:=1 to 10 do
    if StringGrid1.Cells[i,1]<>'' then
    KolF:=KolF+1;
  for i:=1 to KolF do
    F[i]:=StrToFloat(StringGrid1.Cells[i,2]);
  for i:=1 to KolF do
    Lf[i]:=StrToFloat(StringGrid1.Cells[i,3]);
 
  Est:=StrToFloat(Edit2.Text);
end;

и

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
procedure form_md;
var KE: integer;
begin
  Lk[0]:=0;
  for i:=1 to KolA do  {занесем расстояния до точек изменения площади поперечного}
    Lk[i]:=La[i];      {сечения в массив расстояний до контрольных точек}
  for i:=1 to KolF do  {занесем расстояния до точек приложения силы}
    Lk[i+KolA]:=Lf[i]; {в массив расстояний до контрольных точек}
  KKT:=KolA+KolF;
 
  {-------------------------------------------------------------}
  { алгоритм быстрой сортировки на языке pascal (рекурсия!)     }
  { при первом вызове 2-ой аргумент должен быть равен 0         }
  { 3-ий аргумент должен быть равен числу элементов массива - 1 }
  qsort(Lk, 0, KKT); {отсортируем по возрастанию}
  {-------------------------------------------------------------}
 
  KE:=KKT-1;    {кол-во элементов д.б. на 1 меньше кол-ва контр.точек}
                {чтобы не выйти за границы массива, т.к. в цикле     }
                {используется текущая контр.точка и следующая за ней }
  for i:=0 to KE do
    if Lk[i] = Lk[i+1] then
      begin
        for j:=i+1 to KE do
            Lk[j]:=Lk[j+1];
        if i < KKT then
            KKT:=KKT-1;
      end;
 
  {--- формирование массива площадей поперечных сечений в контрольных точках }
  for i:=0 to KKT do
    for j:=1 to KolA do
      if Lk[i] < La[j] then
        begin
          Ak[i]:=A[j];
          break;
        end
      else
        if (Lk[i] = La[j]) then
          if (j <> KolA) then
            begin
              Ak[i]:=A[j+1];
              break;
            end
          else
            begin
              Ak[i]:=A[j];
              break;
            end
        else
          Ak[i]:=A[j];
 
  {--- формирование массива действующих усилий в контрольных точках }
  for i:=0 to KKT do
  begin
    Nk[i]:=0;
    for j:=1 to KolF do
    begin
      if Lk[i] >= Lf[j] then
      begin
        Nk[i]:=Nk[i]+F[j];
      end;
    end;
  end;
end;



0



пофигист широкого профиля

4657 / 3092 / 854

Регистрация: 15.07.2013

Сообщений: 17,818

10.08.2013, 20:35

10

Цитата
Сообщение от Riozaki
Посмотреть сообщение

пробовал оставлять все строки пустыми, нажимал на кнопку и все равно выдает эту ошибку

Что-то мне не нравится эта фраза.

Цитата
Сообщение от Riozaki
Посмотреть сообщение

Puporev, сделал пошаговую отладку, ошибка в этой строчке…
Gk[i]:=(Nk[i]/Ak[i])*10;

И чему равны в этот момент Nk[i] и Ak[i]? Может нулю?



0



7 / 7 / 6

Регистрация: 17.01.2013

Сообщений: 190

10.08.2013, 20:44

 [ТС]

11

блин
на паскале все прекрасно работало и там графика уже была сделана а тут еще с графикой разбираться придется
и все пришлось переделывать только потому, что училке не нравится маленький шрифт и черный экран, и индексов там видите ли нельзя сделать… да паскаль вообще всемогущ



0



пофигист широкого профиля

4657 / 3092 / 854

Регистрация: 15.07.2013

Сообщений: 17,818

10.08.2013, 21:14

12

Цитата
Сообщение от Riozaki
Посмотреть сообщение

в общем я вызвал нужные процедуры, стало выдавать другую ошибку

Чтобы двигаться дальше в поисках ошибки включите в опциях проекта в закладке Compiler галку RangeChecking.



0



Симптомы

В Microsoft Visual Studio 2008 Пакет обновления 1 (SP1) возникает одна из следующих проблем.

Проблема 1

При компиляции проекта, содержащая параметр, /arch:SSE(2) и /fp: за исключением параметр, появляется следующее сообщение об ошибке:

Ошибка командной строки D8016: “/ arch: SSE2′ и ‘ / fp: за исключением” несовместимые параметры командной строки.

Случай 2

При запуске приложения Visual C++, содержит неинициализированный объект с плавающей запятой, возникает исключения с плавающей запятой. Кроме того может появиться следующее сообщение об ошибке:

0xC0000090: Недопустимая операция с плавающей запятой

Эта проблема возникает, если выполняются следующие условия:

  • Добавить /fp: за исключением параметр список параметров компилятора, чтобы отключить исключения с плавающей запятой.


  • Исходный код содержит неинициализированной переменной с плавающей запятой.

  • Неинициализированной переменной с плавающей запятой находится в памяти, который содержит значение сигналов не является числовым (NaN).

Проблема 3

При компиляции неуправляемого приложения Visual C++ с помощью параметра компилятора/O2 или параметр компилятора /Ox , будет получено исключение, подобное следующему:

Необработанное исключение в 0x00401342 в имя_файла: 0xC0000090: Недопустимая операция с плавающей запятой.

Примечания

  • Номер 0x00401342 может измениться в разное время.

  • При включении параметра компилятора /Od или параметра компилятора/O1 исключение не создается.

Решение

Сведения об исправлении

Исправление от корпорации Майкрософт доступно. Тем не менее он предназначен только для устранения проблемы, описанной в этой статье. Предлагаемое исправление должно применяться исключительно в системах, в которых обнаружена эта специфическая неполадка. Это исправление может проходить дополнительное тестирование. Таким образом, если вы не подвержены серьезно этой проблеме, рекомендуется дождаться следующего пакета обновления для Visual Studio 2008, содержащего это исправление.

Для немедленного решения этой проблемы обратитесь в службу поддержки пользователей Майкрософт для получения исправления. Полный список телефонов службы поддержки клиентов корпорации Майкрософт и сведения о стоимости поддержки посетите следующий веб-сайт корпорации Майкрософт:

http://support.microsoft.com/contactus/?ws=supportПримечание. В особых случаях оплата, предусмотренная за обращение в службу поддержки может быть отменена, если специалист службы технической поддержки Майкрософт определит, что обновление будет решением проблемы. Затраты на обычные услуги службы поддержки будут применяться к дополнительным вопросам и проблемам, которые не охватываются конкретным обновлением.

Предварительные условия

Необходимо установить пакет обновления 1 для Visual Studio 2008 для установки этого исправления.

Необходимость перезагрузки

Не требуется перезагружать компьютер после установки данного исправления.

Сведения о замене исправлений

Это исправление не заменяет других исправлений.

Сведения о файлах

Глобальная версия этого исправления содержит атрибуты файла (или более поздние атрибуты файлов), приведенные в следующей таблице. Дата и время для этих файлов указаны в формате общего скоординированного времени (UTC). При просмотре сведений о файле, он преобразуется в локальное время. Чтобы узнать разницу между временем по Гринвичу и местным временем, откройте вкладку Часовой пояс элемента Дата и время в панели управления.

Имя файла

Версия файла

Размер файла

Дата

Время

Платформа

C2.dll

15.0.30729. 4056

2,361,656

03 марта 2009 г.

10:46

x86

Cl.exe

15.0.30729.4056

126, 776

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

19 2,328

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

20 9,736

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

27 7,304

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

27 9,880

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

39 1,496

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

39 2,008

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

45 7,544

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

46 4 200 руб

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

46 7,272

03 марта 2009 г.

10:46

x86

Clui.dll

15.0.30729.4056

47 2,392

03 марта 2009 г.

10:46

x86

Link.exe

9.0.30729.4056

799, 048

03-Mar-2009

10:46

x86

Статус

Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе “Относится к”.

Дополнительные сведения

Если эти проблемы возникают при использовании Visual Studio 2008, с помощью исправления, описанные в следующих статьях базы знаний Майкрософт:

ИСПРАВИТЬ 955025 : сообщение об ошибке при компиляции проекта, содержащего параметр /arch:SSE(2) и /fp: за исключением параметра в Microsoft Visual Studio 2008: «Ошибка командной строки D8016: “/ arch: SSE2” и “/ fp:except’command-несовместимые параметры строки.»

ИСПРАВИТЬ 956089 : исключения с плавающей запятой происходит, когда приложение содержит неинициализированной переменной с плавающей запятой и компилируется с /fp: предполагается, что параметр в Visual Studio 2008

Для получения дополнительных сведений о терминологии обновлений программного обеспечения щелкните следующий номер статьи базы знаний Майкрософт:

Описание 824684 Стандартные термины, используемые при описании обновлений программных продуктов Майкрософт

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    Недопустимая операция с плавающей запятой

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    20.05.09, 16:07

      Программа вылетает при вызове функции

      ExpandedWrap disabled

        function get_filesizes_ratio(file_1, file_2: string): single;

        var

            f_1, f_2: file;

        begin

            if file_exists(file_1) and file_exists(file_2) then

            begin

                assign(f_1, file_1);

                assign(f_2, file_2);

                reset(f_1, 1);

                reset(f_2, 1);

                get_filesizes_ratio:=filesize(f_1) / filesize(f_2);

                close(f_1);

                close(f_2);

            end;

        end;

      с 207 ошибкой(Недопустимая операция с плавающей запятой). В чем может быть проблема?

      Сообщение отредактировано: miksayer – 20.05.09, 18:03


      leo



      Сообщ.
      #2

      ,
      20.05.09, 16:14

        В том, что filesize(f_2) = 0


        miksayer



        Сообщ.
        #3

        ,
        20.05.09, 16:33

          точно, исправил(см. 1ое сообщение), а почему до этого не работало?


          Vesper



          Сообщ.
          #4

          ,
          20.05.09, 16:56

            вначале проверяй, не пуст ли f_2, плюс имеет смысл объявлять типы файловых переменных как file of byte, поскольку если ты получишь на входе два имени файла, один 64 байта, другой 32, результат filesize(f) в BP7 для обоих файлов 0.


            leo



            Сообщ.
            #5

            ,
            20.05.09, 17:27

              Цитата Vesper @ 20.05.09, 16:56

              имеет смысл объявлять типы файловых переменных как file of byte

              Угу, или в reset задавать размер записи = 1

              ExpandedWrap disabled

                  reset(f_1,1);

                  reset(f_2,1);


              miksayer



              Сообщ.
              #6

              ,
              20.05.09, 18:05

                Цитата Vesper @ 20.05.09, 16:56

                Угу, или в reset задавать размер записи = 1

                я так и сделал, просто 1ое сообщение забыл изменить(хотя написал, что изменил :) )

                Цитата Vesper @ 20.05.09, 16:56

                вначале проверяй, не пуст ли f_2, плюс имеет смысл объявлять типы файловых переменных как file of byte, поскольку если ты получишь на входе два имени файла, один 64 байта, другой 32, результат filesize(f) в BP7 для обоих файлов 0.

                угу, я проверял на файлах по 15-30 байт, а воторой файл пустым у меня принципиально быть не может

                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                0 пользователей:

                • Предыдущая тема
                • Pascal
                • Следующая тема

                Рейтинг@Mail.ru

                [ Script execution time: 0,0528 ]   [ 15 queries used ]   [ Generated: 15.05.23, 08:10 GMT ]  

                Добавить комментарий