quinta-feira, fevereiro 28, 2008
Poor Boy's Game
Quando olhei para a capa do filme e vi uma cena de boxe, pus este filme no fim dos filmes que tinha para ver porque sinceramente é um argumento já em desuso e que nunca me atraiu. Como poderia estar mais enganado o filme pouco tem a ver com boxe, aliás o papel boxe podia ser substituído por uma outra disputa qualquer. O filme é um turbilhão de sentimentos onde a nossa própria atitude perante o filme vai flutuando ao longo do mesmo. São nestas ocasiões que não acredito dos Óscares, o Danny Glover tem um desempenho soberbo como actor secundário e nem foi um dos nomeados.
quarta-feira, fevereiro 27, 2008
C# Double Separator
Andei com uns problemas de conversão de string para double, devido ao caracter que separa a parte inteira da parte decimal num número. Dependendo dos regional settings da máquina onde fazemos deploy do nosso código podemos ter como caracter separador a vírgula ou o ponto. O objectivo é fazer código que seja independente dos regional settings considerando sempre um dado caracter como separador.
Com este código a conversão utiliza sempre a vírgula como caracter separador.
NumberFormatInfo nfi = new NumberFormatInfo(); nfi.NumberDecimalSeparator = ","; double val = double.Parse(text.Text, nfi);
Com este código a conversão utiliza sempre a vírgula como caracter separador.
sábado, fevereiro 23, 2008
Sites de Regular Expressions
Encontrei dois sites que para mim são uma grande ajuda quando tenho de fazer RegExs. O primeiro site http://regexlib.com/Search.aspx é como uma bíblia, com bastantes exemplos, referências bibliográficas e documentação online. O segundo http://www.fileformat.info/tool/regex.htm é uma ferramenta de teste onde se pode colocar a RegEx e as nossas strings de teste, obtendo a análise de cada uma quando avaliada pela RegEx.
terça-feira, fevereiro 05, 2008
Liberalização do despedimento
Quem terá sido o esclavagista com esta ideia peregrina? Basicamente isto era criar trabalho precário permanente, o que actualmente acontece é que pelo menos nos primeiros anos os trabalhadores estão sujeitos a trabalhar a recibos verdes ou a contratos de curta duração, se for criada uma lei para a liberalização dos despedimentos significa o mesmo que viver toda a vida nesta situação. O patronato já explora ao máximo os trabalhadores, com isto cria-se uma filosofia de desresponsabilização, não se quer ter mais encargos com uma determinada pessoa então dá-se um chuto dela e já está!
Precisão na soma de floats em javascript
Imagine-se que se quer somar dois valores que vêm de inputs, tendo por exemplo os valores 1,23 e 3,21.
var soma = parseFloat(input1) + parseFloat(input2);
O valor esperado na variável soma seria 4,44 infelizmente este não é o valor obtido, devido à precisão do float que não representa o número exactamente como lhe é passado, obtemos sim o valor 4,439999999. Para resolver este problema desenvolvi o seguinte algoritmo que possibilita truncar as casas decimais de um número.
var soma = parseFloat(input1) + parseFloat(input2);
O valor esperado na variável soma seria 4,44 infelizmente este não é o valor obtido, devido à precisão do float que não representa o número exactamente como lhe é passado, obtemos sim o valor 4,439999999. Para resolver este problema desenvolvi o seguinte algoritmo que possibilita truncar as casas decimais de um número.
//num = número a formatar; nDecimals = número de casas decimais function Precision(num, nDecimals){ var toReturn = ""; num = "" + num; var pointIdx = num.indexOf('.'); //garantir que é decimal if(pointIdx == -1){ num += '.'; pointIdx = num.indexOf('.'); } var limit = pointIdx + nDecimals + 1; //quando se tem mais casas decimais que aquelas que se pretende if(num.length > limit){ //arredondar para baixo if(num[limit] < '5') { for(var iter = 0; iter < limit; ++iter) { toReturn += num.charAt(iter); } return toReturn; } //arredondar para cima else{ for(var iter = 0; iter < pointIdx + nDecimals; ++iter){ toReturn += num.charAt(iter); } var lastNum = parseInt(num.charAt(pointIdx + nDecimals)) + parseInt(1); toReturn += lastNum; return toReturn; } } //acrescentar 0s à direita se necessário if(num.length < limit){ while(num.length < limit){ num += '0'; } } return num; }
Subscrever:
Mensagens (Atom)