如何在swift 3.0中将NSDecimalnumber转换为字符串

时间:2017-01-21 08:09:48

标签: objective-c swift swift3

有人请帮助我如何将nsdecimalnumber值转换为String 这是代码。但不工作。

  var price = prod.minimumPrice //it return type is NSDecimalnumber Store result is 10
  cell.priceLB.text =  NSString(format:"%f", prod.minimumPrice) as String// But display result is 0.000

4 个答案:

答案 0 :(得分:6)

您可以尝试其中一些选项。它们都应该返回10.还要检查为什么需要创建NSString格式化数字并将其转换为String。

"\(price)"
String(describing: price)
NSString(format: "%@", price)

答案 1 :(得分:3)

NSDecimalValue继承自NSNumber。

NSNumber有stringValue属性

var stringValue: String { get }

The number object's value expressed as a human-readable string.
The string is created by invoking description(withLocale:) where locale is nil.

Documentation Source

答案 2 :(得分:1)

两种方式:

  1. 使用$ pip install psutil Collecting psutil Using cached https://files.pythonhosted.org/packages/1c/ca/5b8c1fe032a458c2c4bcbe509d1401dca9dda35c7fc46b36bb81c2834740/psutil-5.6.3.tar.gz Building wheels for collected packages: psutil Building wheel for psutil (setup.py) ... error ERROR: Command errored out with exit status 1: command: /opt/anaconda/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ay_2kk3f/psutil/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ay_2kk3f/psutil/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-xsbcm34z --python-tag cp37 cwd: /tmp/pip-install-ay_2kk3f/psutil/ Complete output (61 lines): running bdist_wheel running build running build_py creating build creating build/lib.linux-x86_64-3.7 creating build/lib.linux-x86_64-3.7/psutil copying psutil/_pswindows.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_pssunos.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_psposix.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_psosx.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_pslinux.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_psbsd.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_psaix.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_compat.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_common.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/__init__.py -> build/lib.linux-x86_64-3.7/psutil creating build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_windows.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_unicode.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_system.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_sunos.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_process.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_posix.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_osx.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_misc.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_memory_leaks.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_linux.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_contracts.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_connections.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_bsd.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_aix.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/runner.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/__main__.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/__init__.py -> build/lib.linux-x86_64-3.7/psutil/tests running build_ext building 'psutil._psutil_linux' extension creating build/temp.linux-x86_64-3.7 creating build/temp.linux-x86_64-3.7/psutil gcc -pthread -B /opt/anaconda/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=563 -DPSUTIL_LINUX=1 -I/opt/anaconda/include/python3.7m -c psutil/_psutil_common.c -o build/temp.linux-x86_64-3.7/psutil/_psutil_common.o gcc -pthread -B /opt/anaconda/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=563 -DPSUTIL_LINUX=1 -I/opt/anaconda/include/python3.7m -c psutil/_psutil_posix.c -o build/temp.linux-x86_64-3.7/psutil/_psutil_posix.o psutil/_psutil_posix.c: In function 'psutil_net_if_flags': psutil/_psutil_posix.c:415:5: warning: 'strncpy' specified bound 16 equals destination size [-Wstringop-truncation] 415 | strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ psutil/_psutil_posix.c: In function 'psutil_net_if_mtu': psutil/_psutil_posix.c:376:5: warning: 'strncpy' specified bound 16 equals destination size [-Wstringop-truncation] 376 | strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gcc -pthread -B /opt/anaconda/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=563 -DPSUTIL_LINUX=1 -I/opt/anaconda/include/python3.7m -c psutil/_psutil_linux.c -o build/temp.linux-x86_64-3.7/psutil/_psutil_linux.o psutil/_psutil_linux.c: In function 'psutil_net_if_duplex_speed': psutil/_psutil_linux.c:539:5: warning: 'strncpy' specified bound 16 equals destination size [-Wstringop-truncation] 539 | strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gcc -pthread -shared -B /opt/anaconda/compiler_compat -L/opt/anaconda/lib -Wl,-rpath=/opt/anaconda/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.7/psutil/_psutil_common.o build/temp.linux-x86_64-3.7/psutil/_psutil_posix.o build/temp.linux-x86_64-3.7/psutil/_psutil_linux.o -o build/lib.linux-x86_64-3.7/psutil/_psutil_linux.cpython-37m-x86_64-linux-gnu.so /opt/anaconda/compiler_compat/ld: build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: unable to initialize decompress status for section .debug_info /opt/anaconda/compiler_compat/ld: build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: unable to initialize decompress status for section .debug_info /opt/anaconda/compiler_compat/ld: build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: unable to initialize decompress status for section .debug_info /opt/anaconda/compiler_compat/ld: build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: unable to initialize decompress status for section .debug_info build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: file not recognized: file format not recognized collect2: error: ld returned 1 exit status error: command 'gcc' failed with exit status 1 ---------------------------------------- ERROR: Failed building wheel for psutil Running setup.py clean for psutil Failed to build psutil ERROR: spyder 3.3.6 has requirement pyqt5<5.13; python_version >= "3", but you'll have pyqt5 5.13.1 which is incompatible. ERROR: spyder 3.3.6 has requirement pyqtwebengine<5.13; python_version >= "3", but you'll have pyqtwebengine 5.13.1 which is incompatible. Installing collected packages: psutil Running setup.py install for psutil ... error ERROR: Command errored out with exit status 1: command: /opt/anaconda/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ay_2kk3f/psutil/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ay_2kk3f/psutil/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-g9lzx155/install-record.txt --single-version-externally-managed --compile cwd: /tmp/pip-install-ay_2kk3f/psutil/ Complete output (61 lines): running install running build running build_py creating build creating build/lib.linux-x86_64-3.7 creating build/lib.linux-x86_64-3.7/psutil copying psutil/_pswindows.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_pssunos.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_psposix.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_psosx.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_pslinux.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_psbsd.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_psaix.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_compat.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/_common.py -> build/lib.linux-x86_64-3.7/psutil copying psutil/__init__.py -> build/lib.linux-x86_64-3.7/psutil creating build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_windows.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_unicode.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_system.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_sunos.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_process.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_posix.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_osx.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_misc.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_memory_leaks.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_linux.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_contracts.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_connections.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_bsd.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/test_aix.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/runner.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/__main__.py -> build/lib.linux-x86_64-3.7/psutil/tests copying psutil/tests/__init__.py -> build/lib.linux-x86_64-3.7/psutil/tests running build_ext building 'psutil._psutil_linux' extension creating build/temp.linux-x86_64-3.7 creating build/temp.linux-x86_64-3.7/psutil gcc -pthread -B /opt/anaconda/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=563 -DPSUTIL_LINUX=1 -I/opt/anaconda/include/python3.7m -c psutil/_psutil_common.c -o build/temp.linux-x86_64-3.7/psutil/_psutil_common.o gcc -pthread -B /opt/anaconda/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=563 -DPSUTIL_LINUX=1 -I/opt/anaconda/include/python3.7m -c psutil/_psutil_posix.c -o build/temp.linux-x86_64-3.7/psutil/_psutil_posix.o psutil/_psutil_posix.c: In function 'psutil_net_if_flags': psutil/_psutil_posix.c:415:5: warning: 'strncpy' specified bound 16 equals destination size [-Wstringop-truncation] 415 | strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ psutil/_psutil_posix.c: In function 'psutil_net_if_mtu': psutil/_psutil_posix.c:376:5: warning: 'strncpy' specified bound 16 equals destination size [-Wstringop-truncation] 376 | strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gcc -pthread -B /opt/anaconda/compiler_compat -Wl,--sysroot=/ -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DPSUTIL_POSIX=1 -DPSUTIL_VERSION=563 -DPSUTIL_LINUX=1 -I/opt/anaconda/include/python3.7m -c psutil/_psutil_linux.c -o build/temp.linux-x86_64-3.7/psutil/_psutil_linux.o psutil/_psutil_linux.c: In function 'psutil_net_if_duplex_speed': psutil/_psutil_linux.c:539:5: warning: 'strncpy' specified bound 16 equals destination size [-Wstringop-truncation] 539 | strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gcc -pthread -shared -B /opt/anaconda/compiler_compat -L/opt/anaconda/lib -Wl,-rpath=/opt/anaconda/lib -Wl,--no-as-needed -Wl,--sysroot=/ build/temp.linux-x86_64-3.7/psutil/_psutil_common.o build/temp.linux-x86_64-3.7/psutil/_psutil_posix.o build/temp.linux-x86_64-3.7/psutil/_psutil_linux.o -o build/lib.linux-x86_64-3.7/psutil/_psutil_linux.cpython-37m-x86_64-linux-gnu.so /opt/anaconda/compiler_compat/ld: build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: unable to initialize decompress status for section .debug_info /opt/anaconda/compiler_compat/ld: build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: unable to initialize decompress status for section .debug_info /opt/anaconda/compiler_compat/ld: build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: unable to initialize decompress status for section .debug_info /opt/anaconda/compiler_compat/ld: build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: unable to initialize decompress status for section .debug_info build/temp.linux-x86_64-3.7/psutil/_psutil_common.o: file not recognized: file format not recognized collect2: error: ld returned 1 exit status error: command 'gcc' failed with exit status 1 ---------------------------------------- ERROR: Command errored out with exit status 1: /opt/anaconda/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ay_2kk3f/psutil/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ay_2kk3f/psutil/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-g9lzx155/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.

  2. 直接使用NumberFormatter属性

使用NumberFormatter的代码固定到小数点后两位:

快速5

stringValue

答案 3 :(得分:0)

试试这个

var price = prod.minimumPrice    
cell.priceLB.text =  "\(price)"
//or
cell.priceLB.text = String(describing: price)