Swift : 값을 반올림하지 않고 float의 문자열

Yogesh lolusare
  1. 소수를 반올림하는 것이 좋지만 정밀도를 줄여야하는 시나리오에 직면 해 있습니다.

  2. 출력 : 15.96 ~ 16.0

  3. 원하는 출력 : 15.96 ~ 15.9

코드 :

var value: AnyObject = dict.valueForKey("XXX")!
  var stringVal = NSString(format:"%.1f", value.floatValue)

나는 이것이 간단 할 것이라고 생각했지만 까다로웠다. 이에 대한 귀하의 의견은 매우 감사합니다.

스티븐 펄 라니

향후 수학 연산에서 반올림 된 숫자를 사용해야하는 경우 다음 함수를 사용할 수 있습니다.

func roundToPlaces(_ value: Double, places: Int, rule: FloatingPointRoundingRule = .toNearestOrAwayFromZero) -> Double {
    let divisor = pow(10.0, Double(places))
    return (value * divisor).rounded(rule) / divisor
}

그런 다음

var value: AnyObject = dict.valueForKey("XXX")!
var rounded = roundToPlaces(value.doubleValue, places: 1, rule: .down)
var stringVal = "\(rounded)"

이것이 실제로 한 일은 다음과 같습니다.

15.96 * 10.0 = 159.6
floor(159.6) = 159.0
159.0 / 10.0 = 15.9

주의 사항 : 과학적 정밀도를 사용하는 상황에서는 도움 이되지 않습니다.

1.49850e0 --> 1.4e0 // (5 places --> 1 place)
1.39e10 --> 1.3e10 // (3 places --> 1 place)

모든 숫자를 다음과 같이 처리합니다. e0


[업데이트 2018-08-09]
내 대답이 일부 뷰를 얻는 것 같아서 부동 소수점 숫자가 메모리에 저장되는 방식으로 인해 나눗셈으로 부동 소수점 숫자를 반올림하면 오류가 발생할 수 있다는 점을 지적하고 싶습니다. @mattt 사용자가 다른 곳에서 지적했듯이 :

floor(1.5679999 * 1000) / 1000 == 1.5669999999999999

(수학을 배우고 싶다면 이 논문 은 숫자와 컴퓨터에 대한 훌륭한 입문서입니다.)

그 정도의 정밀도가 필요한 경우에는 대신 고정 소수점 숫자를 사용하십시오. Swift는 Decimal이러한 목적으로 유형을 제공합니다 .

중요한 것은 문제를 이해하는 것입니다. 돈이나 센서 데이터로 작업하는 경우 Decimals가 필요할 것입니다. 컴퓨터 그래픽으로 작업하는 경우 Floats를 사용할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

반올림하지 않고 열 값을 자르는 Pandas

분류에서Dev

숫자를 문자열로 취하고 float 또는 double을 사용하지 않고 정확한 자릿수로 반올림하는 방법이 있습니까?

분류에서Dev

python3에서 반올림하지 않고 float 값을 str로 변환

분류에서Dev

반올림하지 않고 f-string float 자르기

분류에서Dev

반올림하지 않고 유효 숫자가 3 개인 문자열을 쓰는 방법

분류에서Dev

자르지 않고 문자열 내의 값을 기반으로 문자열 반환

분류에서Dev

반올림하지 않고 문자열을 통화로 변환하는 방법은 무엇입니까?

분류에서Dev

localStorage가 대소 문자가 null이고 정의되지 않은 문자열 값을 반환하는 이유

분류에서Dev

반올림하지 않고 Objective C에서 문자열을 부동으로 변환합니다.?

분류에서Dev

2D 문자열 목록의 길이가 올바른 값을 반환하지 않습니다.

분류에서Dev

값을 반환하지 않는 Swift if 문

분류에서Dev

사전을 사용하지 않고 C #에서 문자열의 Gematrical 값 계산

분류에서Dev

반올림하지 않고 2 개의 숫자를 더하는 방법

분류에서Dev

DecimalFormat을 사용하지 않고 소수점 이하 두 자리로 반올림

분류에서Dev

기본 NumDigAfterDec을 사용하고 반올림하지 않은 형식 숫자

분류에서Dev

팬더의 열에서 목록을 검색하고 찾은 경우 문자열 값을 반환하고 그렇지 않은 경우 null을 반환합니다.

분류에서Dev

문자열을 일련의 문자로 변환하고 값 추가-작동하지 않음

분류에서Dev

첫 번째 반복되지 않는 문자 알고리즘 Swift 4 찾기 (문자열을 한 번만 반복)

분류에서Dev

실제 문자열의 경우 기본적으로 '0'으로 설정하지 않고 float에서 PHP 문자열을 캐스팅하는 방법

분류에서Dev

어떻게 형식의 숫자 문자열로 (1K, 2M ...) 파이썬에서 반올림하지 않고?

분류에서Dev

키와 값을 받고 ArrayList의 문자열을지도

분류에서Dev

두 열의 문자열을 비교하고 하위 문자열이 동일하지 않은지 확인

분류에서Dev

오류를 1 개의 유효 숫자로 반올림하고 오류 자릿수에 따라 값을 반올림합니다.

분류에서Dev

값에 100을 곱하지 않고 형식 문자열 %

분류에서Dev

문자 사이의 문자열을 자르고 해당 문자를 제거하지 않습니다.

분류에서Dev

UUID 값을 HTSQL의 문자열로 명시 적으로 캐스트하지 않고 쿼리하는 방법

분류에서Dev

Javascript, 최종 출력에서 £ 기호로 문자열의 값을 반올림하는 방법

분류에서Dev

Excel : 1 열의 문자열을 비교하고 2 열의 값 합계

분류에서Dev

의 BigDecimal을 사용하지 않고 자바에서 반올림하지 않고 4 소수점 이하 자릿수 개까지 번호를 인쇄하는 방법

Related 관련 기사

  1. 1

    반올림하지 않고 열 값을 자르는 Pandas

  2. 2

    숫자를 문자열로 취하고 float 또는 double을 사용하지 않고 정확한 자릿수로 반올림하는 방법이 있습니까?

  3. 3

    python3에서 반올림하지 않고 float 값을 str로 변환

  4. 4

    반올림하지 않고 f-string float 자르기

  5. 5

    반올림하지 않고 유효 숫자가 3 개인 문자열을 쓰는 방법

  6. 6

    자르지 않고 문자열 내의 값을 기반으로 문자열 반환

  7. 7

    반올림하지 않고 문자열을 통화로 변환하는 방법은 무엇입니까?

  8. 8

    localStorage가 대소 문자가 null이고 정의되지 않은 문자열 값을 반환하는 이유

  9. 9

    반올림하지 않고 Objective C에서 문자열을 부동으로 변환합니다.?

  10. 10

    2D 문자열 목록의 길이가 올바른 값을 반환하지 않습니다.

  11. 11

    값을 반환하지 않는 Swift if 문

  12. 12

    사전을 사용하지 않고 C #에서 문자열의 Gematrical 값 계산

  13. 13

    반올림하지 않고 2 개의 숫자를 더하는 방법

  14. 14

    DecimalFormat을 사용하지 않고 소수점 이하 두 자리로 반올림

  15. 15

    기본 NumDigAfterDec을 사용하고 반올림하지 않은 형식 숫자

  16. 16

    팬더의 열에서 목록을 검색하고 찾은 경우 문자열 값을 반환하고 그렇지 않은 경우 null을 반환합니다.

  17. 17

    문자열을 일련의 문자로 변환하고 값 추가-작동하지 않음

  18. 18

    첫 번째 반복되지 않는 문자 알고리즘 Swift 4 찾기 (문자열을 한 번만 반복)

  19. 19

    실제 문자열의 경우 기본적으로 '0'으로 설정하지 않고 float에서 PHP 문자열을 캐스팅하는 방법

  20. 20

    어떻게 형식의 숫자 문자열로 (1K, 2M ...) 파이썬에서 반올림하지 않고?

  21. 21

    키와 값을 받고 ArrayList의 문자열을지도

  22. 22

    두 열의 문자열을 비교하고 하위 문자열이 동일하지 않은지 확인

  23. 23

    오류를 1 개의 유효 숫자로 반올림하고 오류 자릿수에 따라 값을 반올림합니다.

  24. 24

    값에 100을 곱하지 않고 형식 문자열 %

  25. 25

    문자 사이의 문자열을 자르고 해당 문자를 제거하지 않습니다.

  26. 26

    UUID 값을 HTSQL의 문자열로 명시 적으로 캐스트하지 않고 쿼리하는 방법

  27. 27

    Javascript, 최종 출력에서 £ 기호로 문자열의 값을 반올림하는 방법

  28. 28

    Excel : 1 열의 문자열을 비교하고 2 열의 값 합계

  29. 29

    의 BigDecimal을 사용하지 않고 자바에서 반올림하지 않고 4 소수점 이하 자릿수 개까지 번호를 인쇄하는 방법

뜨겁다태그

보관