2015-06-17 5 views
-3

Я хочу получить только ту часть, которая находится до точки, но я не могу получить ее с каждым методом. Мое значение - 1.734565456765434E-06. Я хочу преобразовать его в 1Преобразование экспоненциального двойного значения в int в C#

+1

Знаете ли вы, что номер, должен представлять? Он даже не близок к 1. –

+0

Я просто хочу номер перед точкой. –

+1

Как насчет 2E + 04 - должно ли оно быть всего 2? Некоторое объяснение того, как вы хотите преобразовать значение, сделает вопрос более конкретным. Добавление кода, который вы пробовали, сделает вопрос ОК для SO. –

ответ

2

Похоже, вы пытаетесь сделать get the most significant digit of a number.

var n = 1.734565456765434E-06; 
var exp = Math.Floor(Math.Log10(n)); // -6 
var result = Math.Floor(n/Math.Pow(10, exp)); // 1 

Это можно обобщить так:

var n = 1.734565456765434E-06; 
var nDigits = 1; // 1 significant digit 
var exp = Math.Floor(Math.Log10(n)); 
var result = Math.Floor(n/Math.Pow(10, exp + (1 - nDigits))); 
0

Если вы заинтересованы только в первой цифре Вашего научного представления, попробуйте следующее:

var number = 1.734565456765434E-06; 
var numberString = number.ToString("E"); 
var firstDigitString = numberString.Substring(0, 1); 
var firstDigit = int.Parse(firstDigitString); 
Смежные вопросы