1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

C# problem convert

Discussão em 'Programação' iniciada por alfinete, 20 de Agosto de 2008. (Respostas: 6; Visualizações: 1417)

  1. alfinete

    alfinete Power Member

    estou em c#

    Código:
    private double graus_kelvin_celseo(string kelvin)
            {
                double celseo;
                double kelvin2;
                int tamanho = kelvin.Length;
                string part1 = kelvin.Substring(0, tamanho - 1);
                string part2 = kelvin.Substring(tamanho - 1,1);
                string final = part1 + "." + part2;
            kelvin2=double.Parse(final) ;
    
            celseo = kelvin2 - 273.15;
    
            return celseo;     
            }
    
    tenho este metodo
    
    do tipo em kelvin recebo - 1230
    na part1 fico com 123
    na part2 fico com 0
    na final fico com 123.0
    em kelvin2 fico com 1230,0

    não sei porquê? , pois em kelvin2 eu gstava que fica-se 123,0 3 não 1230,0

    agradecia uma ajuda
     
  2. Tens a certeza de que queres isso a receber uma string como argumento? Não será melhor converter previamente para double e facilitar os cálculos?
     
  3. alfinete

    alfinete Power Member

    comvem ser string pois tenho de fazer aquela separação da string ,para a por xxx.x
     
  4. E não podes converter depois o double para string quando for preciso?
     
  5. optimusSupremo

    optimusSupremo Power Member

    Não é mais facil formatar o numero para mostrares com uma casa decimal?
    E se queres passar 1234 e mostrar 123.4 basta dividires por 10...
     
  6. Maxx77

    Maxx77 Power Member

    exacto...andar a fazer tratamento de strings so para colocar uma virgula...
    é mais facil ir por calculo matematico
    e ja agora, em questoes de performance, o Convert.ToDouble(final) é preferivel ao Parse(final)
     
  7. alfinete

    alfinete Power Member

    esse problem resolvido

    Código:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Management;
    
    using sist2.ROOT.CIMV2;
    
    namespace sist2
    {
        public partial class Formprocessador : Form
        {
            public Formprocessador()
            {
                InitializeComponent();
            }
    
            private void Formprocessador_Load(object sender, EventArgs e)
            {
                dados();
            }
    
            private void dados()
            {
    
                processador();
                processador_temp();
               
            }
    
            private void processador ()
    
            {
                ManagementObjectSearcher queryprocessador = new ManagementObjectSearcher("SELECT * FROM Win32_processor");
                ManagementObjectCollection qCollectprocessador = queryprocessador.Get();
                foreach (ManagementObject p in qCollectprocessador)
                {
                    lblinfodescricao.Text = p["Description"].ToString();
                    lblinfoarquitectura.Text = p["Architecture"].ToString() ;
                    lblinfofamilia.Text = p["name"].ToString();
                    lblinfoprodutor.Text = p["Manufacturer"].ToString();
                    lblinfomaxrelogio.Text = p["MaxClockSpeed"].ToString() + " Mghz";
                }
            
            
            }
    
            private void processador_temp()
            {
                string scope = @"root\WMI";
                string query = @"select * from MSAcpi_ThermalZoneTemperature"; 
    
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); 
            //    ManagementObjectSearcher queryprocessador = new ManagementObjectSearcher("root\WMI","SELECT * FROM MSAcpi_ThermalZoneTemperature");
                ManagementObjectCollection qCollectprocessador = searcher.Get();
                foreach (ManagementObject pt in qCollectprocessador)
                {
    
                    
                    lblinfotemp.Text = Convert.ToString(graus_kelvin_celseo(Convert.ToDouble(pt.Properties["CurrentTemperature"].Value))) + " ºC";
                    //this.lblinfopontopassivo.Text = Convert.ToString(graus_kelvin_celseo(Convert.ToDouble(pt.Properties["Passive Trippoint"].Value))) + " ºC";
                    break;
    
                    
    
    
                }
    
               
            }
    
    
    
            // C = K − 273,15
            private double graus_kelvin_celseo(double kelvin)
            {
                double celseo; // variavel de retorno
                // calculo da conversão
                celseo = (kelvin - 2731.5)/10;
    
                return celseo;     
            }
    
       
        }
    }
    
    este é i code para calcular a temperatura do processador penso eu ?

    ha um problem que ue não percebo.

    ele a primeira vez que me passa no foecah do metodo "processador_temp()" da-me 30 e qq graus , mas depois acaba por passar a 2 e reduz a metade , por isso faso um break para por os 30 e poucos graus

    acham que estou a fazer bem ?
     

Partilhar esta Página