Произведет ли строковое преобразование уже округленного числа с плавающей запятой, а затем преобразовать его обратно в число, чтобы создать дополнительную погрешность точности? - PullRequest
0 голосов
/ 06 февраля 2020

По Математика с плавающей запятой не работает? , я знаю, что 0,1 + 0,2 приводит к 0,30000000000000004 вместо 0,3 из-за ошибок с плавающей запятой. Однако, что если я скопирую «0.30000000000000004» из оповещения (0,1 + 0,2) и напишу число («0,30000000000000004»), оно все равно будет равно 0,1 + 0,2?

или вообще:

let a=float_number_1 + float_number2;
let b=Number((float_number_1 + float_number2).toString());

Всегда ли a в точности равно b?

1 Ответ

1 голос
/ 06 февраля 2020

Преобразование по умолчанию числа Java в строку задано для получения достаточного количества цифр, чтобы однозначно отличало guish число от смежных представляемых значений. Другими словами, он специально предназначен для создания строки, которую можно преобразовать обратно в число для получения исходного значения.

Итак, если вы преобразуете из float в строку в float или из double до строки double, вы получите исходный номер. Если вы преобразуете double в строку в float, вы можете получить другое число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...