Я пытаюсь отобразить на веб-странице фактические цены в разных валютах, используя ASP .NET и C #. Проблема заключается в том, что если я открою свой браузер с таблицей, с которой мой алгоритм использует для считывания значений, и с веб-страницы, которая должна его отображать, иногда значения не будут совпадать.
Например, предположим, что у нас есть значение ¥ 0,03810 в Google Sheet. Когда я открываю веб-страницу, она может показывать точное значение, 0,03810 иен, или фактически отображать действительно разные значения, например 0,03815 и даже 0,03803 иен.
Я уже много чего перепробовал. Во-первых, я подумал, что это происходит из-за того, что алгоритм округляет числа так, как ему нравится, поскольку нет никаких критериев относительно того, как он должен печатать число. Оказывается, это было не так, поскольку я уже пробовал:
- Преобразование строки, считанной с листа, в десятичную / двойную, а затем преобразование ее снова в строку.
- Фактически сохраняя значение как десятичное / двойное, а затем выполняя некоторые простые математические манипуляции с ним, такие как умножение на 100, а затем деление на 100. Все еще нет прогресса.
- Преобразование значения в строку перед присвоением переменной.
В любом случае, чтобы прочитать каждую строку из моего Google Sheet, я использую WebClient
, который загружает ее .tsv
версию, затем я разделяю строку и превращаю ее в список.
List<Coin> coins = new List<Coin>();
string priceList = wc.DownloadString(xls);
var lines = priceList.Split('\n').ToList();
Теперь, когда у меня есть все мои строки в виде списка, я использую for loop
, чтобы перебрать их и получить валютную цену каждой из них.
for (int x = 1; x < lines.Count(); x++) {
var item = lines[x].Replace("\r", "").Split('\t');
coins.Add(new Coin() {
price = item[4],
//assigning other attributes...
}
}
item[4]
содержит цену валюты в Google Sheet.
Формула Google Finance, которую я использую:
=GoogleFinance("CURRENCY:USDBRL";"average")
Когда я наконец напечатаю price
на веб-странице, большую часть времени (кажется, что она становится еще более нестабильной, чем больше десятичных разрядов), она будет показывать другие значения, чем те, которые на самом деле показывает мой лист.
Теперь я не совсем уверен, действительно ли алгоритм округляет некоторые числа, когда он выбирает значения в Google Sheet, или формула Google Finance фактически меняет свое значение каждые несколько секунд, и значение, отображаемое на веб-странице, равно правильный, потому что он всегда загружает последнюю версию листа и запускает формулу Google Finance вместе.