Há umtonelada de tópicossobre este tema, mas não há respostas simples e definitivas.
Alguém pode me dizer como desativar permanentemente o arredondamento de células no arquivo .csv criado pelo script?
Basicamente, '377635637222436751'está sendo convertido para'377635637222437000' automaticamente e isso não é realmente aceitável para minhas necessidades.
Eu tentei isso:
Ferramentas->Opções->Calc->Calcular "Precisão conforme mostrado"
e isto:
Formatar > Células > Números > Categoria > (role para baixo para) Texto.
(mas considerando que meu script cria o .csv - esta opção não é muito boa, pois deve ser feita após a criação do arquivo)
E nenhum dos dois está funcionando. O número permanece arredondado - mesmo após a formatação da coluna após a criação do arquivo.
Alguém tem alguma sugestão?
Responder1
Pelo que sei, o LibreOffice não possui números de precisão arbitrários (decimais ou inteiros). Então se o númeroexcede o intervalo de um número inteiro longoisso éarmazenado como um número IEEE754e por isso tem uma precisão limitada.
Então, basicamente, você não pode fazer cálculos com precisão arbitrária no Calc, e se quiser ler o número longo como um número, ele será arredondado.
Se não precisar fazer cálculos, use uma string; coloque o seu csv
:
,
,
,12345678901234678901234567890
,"123456789012345678901234567890"
(observe as aspas) e ao lê-lo certifique-se de adicionar "campo entre aspas como texto" e o delimitador de texto correto:
...e você tem
Agora --- se você tocar, transformar, avaliar a string --- você terá o arredondamento entrando em ação novamente.
Talvez você possa usar o tipo de moeda que é um número inteiro de 64 bits, mas até onde eu sei não há como forçar isso via csv
.