Рейтинг:
50
Maciej Los
Я твердо верю в это Урош Шмон[^] прав в отношении этого утверждения: "Csv-это очень простой текстовый формат, который ничего не знает о его содержании". Вы не предоставили способ сохранения чисел в csv-файл, поэтому мы не можем помочь вам решить вашу проблему, потому что у нас нет доступа к вашему экрану или данным. Я протестировал приведенный ниже код, и он работает идеально, даже если Excel отображает числа в научном формате.
decimal[] numbers = {43564765876978, 56576867897699, 45765879789789};
string path = @"D:\text.csv";
string[] lines = numbers.Select(x=>x.ToString()).ToArray();
File.WriteAllLines(path, lines);
lines = File.ReadAllLines(path);
//result:
//43564765876978
//56576867897699
//45765879789789
Niranjankr
Пожалуйста, откройте ваш текстовый файл.csv. проблема существует.
результат есть ::::
4.35648 E+13
5.65769 E+13
4.57659 E+13
Maciej Los
Нет, нет никакого иссуэ, когда вы будете использовать метод моего метода. Я понятия не имею, какой метод вы используете. Как я уже упоминал, когда вы открываете этот файл с помощью Excel, вы всегда будете видеть научный формат.
Niranjankr
- вы всегда будете видеть научный формат."
Если мы не хотим открывать в научном формате, то как это возможно.
Maciej Los
Спасибо тебе, Карло!
Рейтинг:
31
Uroš Šmon
Проблема не на стороне csv. Csv-это очень простой текстовый формат, который ничего не знает о своем содержании. Похоже, что вы записываете в него числа с плавающей запятой, используя формат по умолчанию. Используйте формат с нулевыми десятичными знаками при записи или преобразуйте числа в целое число
Niranjankr
Я посылаю строковое значение. это большая цифра(17). "15704984052700001"
это приложение на stringbuilder.
Uroš Šmon
csv не имеет типа столбца, все они являются строками. Проверьте, как csvhelper работает со столбцами и типами столбцов. Я никогда не использовал его, потому что csv так прост
Рейтинг:
27
Niranjankr
if we place a ' at the front of the number in the csv cell, excel will format it as text.
But then you will have to parse out the ' if you plan to use it as a number.
This is specific to Excel and may or may not work in other spreadsheet applications.
Note :: it is not a proper solution but we can use to show it and while read data from csv need to ignore it.
Maciej Los
Обратите внимание, что мы говорим о файле csv вместо Excel... Итак, ваше решение неверно.
Кстати: добавление ['] в начале номера меняет номер на текст. Вы уверены, что ОП хочет хранить текст вместо цифр?
Niranjankr
Примечание :: это не правильное решение, но мы можем использовать, чтобы показать его, и при чтении данных из csv нужно игнорировать его.
Рейтинг:
0
Patrice T
Цитата:
Но они продолжают заменяться такими значениями, как 4.575769 E+12
Это не проблема, связанная с csv, если вы выведете данные на экран, то увидите точно такие же значения.
Виновата именно программа, которая пишет в csv.
Это может быть форматирование при выводе чисел или тип данных, в котором хранятся данные.
Но пока мы не видим ваш код, трудно сказать.
CHill60
Более вероятно, что ОП использует Excel для просмотра файла! :-)
Patrice T
Возможно, но я ничего не вижу в Excel.
CHill60
Это то, что я вижу здесь ежедневно - пользователи жалуются, что цифры "стали странными", потому что они настаивают на открытии CSV - файлов с помощью Excel, который автоматически меняет цифры на научную нотацию
Рейтинг:
0
ProgrammingExplorer
Проблема должна иметь тип данных.
Вы должны преобразовать тип данных double в string, который преобразует число в экспоненциальную форму.
напр.
double val = 43564765876978;
string s = val.ToString();
вместо вышеприведенного используйте улонг в качестве следующего, и все будет в порядке.
ulong val = 43564765876978;
string s = val.ToString();
Maciej Los
Я бы посоветовал прочитать вопрос еще раз. Ваш ответ не связан с вопросом. Кстати: преобразование чисел в строку и наоборот-очень плохая идея.
Рейтинг:
0
Member 14978422
Вы можете просто добавить "\t" в конце номера. Это добавит пробел после и перестанет преобразовывать его в научную нотацию.
Напр.:
let number = 123456789 + "\t";
CHill60
Что такое let
?
Число не преобразуется ни во что, ОП явно открывал CSV с помощью Excel и дисплей ценность заключалась в научной нотации.
Содержимое CSV-это все строки.
И это решение все равно не работает - попробуйте сохранить 12345678934567 , 12345678934567 в файл .csv и открыть его в Excel