Вы знаете, как преобразовать float в буфер символов, не выделяя никакой памяти?Преобразование float в char [] без выделения памяти
=> Я просто хочу повторить то же самое, что и float.ToString() do; так что я могу поместить результат в буфер вместо выделения строки
Я написал функцию, но она не работает очень хорошо «округление»:
- 39,71 становится «39,709996»
- 39.71001 «39.710004»
Это потому, что 39.71 в качестве поплавка представляет собой округление сохраненного значения в памяти, которое составляет 39.709996. С некоторым округлением в моей функции я могу легко прийти к чему-то вроде этого:
- 39,71 становится «39,71»
- 39,71001 становится «39,71»
который не большой либо, как хотелось бы чтобы сохранить точный алгоритм float.ToString()
, которому удается написать «39.71» и «39.71001»
Знаете ли вы, как это работает float.ToString()
?
Прецизионность по моей цели: я хочу добавить большое количество поплавка (смешанного с другими типами) в очень большой строке - и выделить эту строку только один раз в конце, чтобы избежать слишком большого сбора мусора. Поэтому мне действительно нужно преобразовать float в массив char (какой бы то ни было формат шрифта, просто нет строки unmutable)
его невозможно хранить, не выделяя никакой памяти. –
У вас должно быть какое-то распределение, так как вам нужно выделить хотя бы строку, которую вы будете возвращать из функции – thecoop
Я не хочу, чтобы получить уже созданную функцию, но чтобы понять, как поплавок.Алгоритм Tostring() работает и делает из него пользовательскую функцию. – Gaddy