1. Ejercicio de combate real:
int number1 = 12; //一个整数类型的变量并赋值
double number2 = 1.11111111111111111111; //64位双精度浮点型数据(存小数时电脑默认)
float number3 = (float)1.11111111111111111111; //32位单精度浮点型数据(使用时需先进行转换:0.1f或(flost)0.1)
char number4 = 'a'; //字符数据,‘a’
string number5 = "123"; //字符串数据,“abc“
Console.WriteLine(number1);
Console.WriteLine(number2);
Console.WriteLine(number3);
Console.WriteLine(number4);
Console.WriteLine(number5);
Console.ReadKey();
Resultado de salida:
2. Déjame hacerte una pregunta
? ? Doble y flote ambos decimales de la tienda. ¿Por qué deben dividirse en dos? Uno no es suficiente. ¿Cuál es la diferencia entre los dos?
Primero veamos un ejemplo:
double number2 = 1.11111111111111111111;
float number3 = (float) 1.11111111111111111111;
Console.WriteLine(number2);
Console.WriteLine(number3);
Console.ReadKey();
Resultado de salida:
Según el rango de valores de double y float:
doble | Punto flotante de doble precisión de 64 bits | (+/-) 5,0 x 10 ^ -324 a (+/-) 1,7 x 10 ^ 308 |
flotador | Punto flotante de precisión simple de 32 bits | -3,4 x 10 ^ 38 hasta + 3,4 x 10 ^ 38 |
Están representados por imágenes como esta:
double tiene un rango de representación mayor que float
Tres ? ? Hacer preguntas
Pregunta 1: Al asignar valores a dos variables, ¿no hay una cadena larga de números? ¿Por qué estos son solo algunos de los resultados de salida?
Pregunta 2: El declarada number3 . Es de coma flotante de precisión simple de datos ¿Por qué es necesario escribir ( float ) cuando se asigna un valor más adelante ? Cual es su funcion? No puedes?
Cuatro, resolver
Pregunta 1 :
A través del código en el momento de la declaración y el resultado de la salida, podemos encontrar:
Al asignar un valor a la variable número2 de tipo doble declarada , hay 20 dígitos después del punto decimal, pero el resultado de salida es solo de 16 dígitos
Al asignar un valor a la variable declarada number3 de tipo float , hay 20 dígitos después del punto decimal, pero el resultado de salida es solo 7 dígitos
De hecho, en C # ,
- doble doble precisión, en un equipo representado . 8 bytes, una precisión de 16 bits
- Folat precisión simple, en un equipo que representaba . 4 bytes, los bits son válidos . 7 bits
- El decimal es de alta precisión, el dígito efectivo es 28
Pregunta 2 :
Echemos un vistazo a cómo se ve el código en VS2019
El sistema informará un mensaje de error rojo: "No se puede convertir implícitamente el tipo Double al tipo" flotante "; utilice el sufijo" F "para crear este tipo.
Qué significa eso?
En C # ,
Al declarar una variable de precisión, el sistema establecerá automáticamente este decimal en un valor de tipo doble , por lo que la variable número3 declarada en la figura anterior ahora parece un valor del tipo de datos flotante , pero de hecho es un tipo doble Valor numérico. Si desea convertir este tipo doble en un tipo flotante , debe agregar " F " después del valor flotante o agregar ( flotante ) antes del decimal . Como se muestra abajo
número flotante3 = ( flotante ) 1.11111111111111111111;
número flotante3 = 1.11111111111111111111F; |
para resumir
En C #, double representa un rango mayor que float;
El número de dígitos significativos de decimal es mayor que el de los tipos double y float, pero el rango de representación es menor que ambos;
Decimal es adecuado para bancos, que son monedas más precisas y pueden ser fracciones precisas;
Cuando se declara el valor del tipo de precisión decimal, el sistema pasará automáticamente al tipo doble;
Al declarar un valor de tipo flotante, debe agregar (flotante) antes del decimal o agregar F después del decimal