У меня есть ячейка, содержащая число с шестью десятичными разрядами, и я хочу назначить ее ячейке другой рабочей таблицы с точностью до 5 знаков после запятой. Я использую одну и ту же переменную дважды, и она работает правильно при первом назначении, но во время второго оператора присваивания значения Cells Value двойной переменной значение округляется до четырех десятичных знаков автоматически. У меня нет опции Excel, чтобы использовать отображаемый precisoin включен.Значение округления ячейки Excel 2013 при назначении с плавающей запятой
Dim i As Long, x As Long, round_prc As Double
Dim WSTarget As Worksheet
'OE Price
round_prc = Round(.Cells(3 + x, 9).Value, 5) ; six decimals assigned to 5 decimals
WSTarget.Cells(1 + i, 10).Value = round_prc
'New Price
round_prc = .Cells(3 + x, 13).Value ; six decimals assigned to 4 decimals??????
round_prc = Round(.Cells(3 + x, 13).Value, 5)
WSTarget.Cells(1 + i, 12).Value = round_prc
ОБНОВЛЕНИЕ: Формат ячеек отличается от цены OE и новой цены. Новая цена включает $. Когда я удаляю $, назначение больше не округляется. Почему валюта автоматически округляется до 4 знаков после запятой? Может ли это объяснить?
Под '' Новая цена', почему вы дважды назначаете round_prc? Почему бы просто не назначить его один раз таким же образом, как вы его назначили в разделе «Цена OE»? Может быть, что первое присваивание по какой-то причине обрезает переменную до 4 десятичных знаков, а затем не осталось 5 десятичных знаков, оставшихся до раунда, во второй раз, когда вы назначаете переменную. –
Я добавил первую проверку, чтобы проверить значение во время сеанса отладки. Оба назначения округляют значение в round_prc до 4 знаков после запятой. Благодарю. –
Поскольку вы добавили информацию о том, что она отформатирована в формате валюты, похоже, что вы должны использовать 'Value2' вместо' Value'. Я просто искал информацию об этом, и это может быть полезно: http://stackoverflow.com/questions/17359835/what-is-the-difference-between-text-value-and-value2 –